[Linux] 我想使用find命令一次性删除服务器上的所有文件!
目录
介绍
你好。这是24毕业系统解决方案基础设施工程师的第一年。
如果我注意到这一年结束了,我害怕自从我加入以来的一年时间的流动速度。
这次,我被要求在实际工作中删除服务器中的文件,但是由于金额太大而无法一个一个删除的效率太低了!这是使用“查找”命令时学到的方法
如果您可以掌握它,这很方便,但是如果您犯了一个错误,则可能会消失一个完全不同的观点,因此我想练习使用它,以免害怕!
此外,还有许多与Linux命令有关初学者的文章,因此,如果您担心的话,请看看。
[Linux] 命令行中“~”、“$”、“#”分别代表什么意思? [对于初学者]
查找命令是什么?
基本格式
首先,查找命令要搜索文件和董事时使用的Linux命令
可以将多个文件和目录指定为搜索目标。
查找命令的基本格式如下。
查找[搜索路径] [选项] [动作]
当您实际使用它时,看起来像这样。
查找/var/log/test_log -name“ file_1” -print
上面的内容是在/var/log/test_log下指定文件名(-name“ file_1”)并显示(-print)。
您可以看到想要的尽可能多的东西,因此可以看到一些复杂且困难的命令,但是基本形式很简单。在随后的部分中,我将更多地谈到选项和操作。
选项示例
我们还将介绍查找命令中使用的选项。
仍然有很多,但这是本文中的基本和必要的命令。
选项 | 解释 |
- 名称“ [文件名]” |
通过指定文件名 |
-iname“ [文件名]” |
指定文件名(不区分大小字符) |
-Path“ [文件名]” |
通过指定路径名或特定模式的部分字符串来搜索 |
-ipath“ [文件名]” |
在路径名中搜索部分字符串和特定模式(请勿区分字符的大小) |
-type [文件类型] |
指定文件类型并搜索 - 您可以在类型之后指定F(正常文件)或D(目录)。 |
-mtime“ [天数]” |
在指定的天数之前搜索更新的文件 |
-atime“ [天数]” |
在指定的天数之前搜索访问的文件 |
-newermt“ [date]” |
在指定的日期和时间之后搜索更新的文件 |
如何在操作中指定删除
这里的操作是指
处理方法这次,我想专注于如何删除处理,因此我想使用RM介绍删除处理方法
即使您只是删除它,也有多种删除它的方法。
示例是 | xargs rm -p ”,“ -exec rm {{ + ”,“ -exec rm {} \; ,用于传递和删除Find命令指定的多个文件到RM命令。
行动 | 处理方法 | 命令说明 | 如何处理参数 |
| | 由于多个文件被一起传递到RM,因此 在删除大量文件时,仅执行RM一次→处理很快。 |
一个命令→“ |”连接而不是选项, 可以将“ XARGS”与各种命令结合使用 |
白色空白字符(空间,线路断裂等)被认为是参数 →如果路径中有空间,则可能无法正确识别。 |
-Exec rm {} + + | 由于多个文件被一起传递到RM,因此 在删除大量文件时,仅执行RM一次→处理很快。 |
“ -exec”是查找命令的选项之一 →不能与其他命令一起使用 |
该论点是固定的 →即使路径上有空间,它也将论点识别为磅 |
-exec rm {} \; | 由于多个文件将传递给RM一一,因此RM由文件数量 →删除大量文件需要很长时间。 |
“ -exec”是查找命令的选项之一 →不能与其他命令一起使用 |
该论点是固定的 →即使路径上有空间,它也将论点识别为磅 |
我粗略地看了看这个表,但是当我看这张表时,“ -exec rm -i {} \; ”需要花费时间来处理,而不是 -exec rm {} + 你不知道吗?
当然,它不适合处理大量文件,但是事先创建的命令和程序是“ - ” 。
例如,假设您创建了一个名为
filedeleter.exe 可以以与RM相同的方式删除该程序,但只收到一个程序。
假设您使用此程序并查找命令file_1 , file_2 , file_3
如果您使用“ -exec filedeleter.exe {{} + 则可以立即通过file_1 , file_2和file_3 您不能执行
filedeledeter.exe 相反,如果您使用 filedeleter.exe {} \; 则可以一一执行多个文件
RM命令使用此时间波动,除非参数数量超过最大值,否则可以收到的参数数量,但是
某些参数已修复,例如该示例中列出的“ fileedeleter.exe”。前提。
在这种情况下,“ -exec〜 {} +”可能没有牙齿,而是在“ -exec〜 {} \;”中,可能会有一些可以可靠地执行的事情。
因此,有必要根据要为目标参数进行哪种处理来选择要使用的操作
我很长时间以来谈论了“ -Exec”,但是
我想有效地删除多个文件,并使用可以与其他命令一起使用的 XARGS (我想使用一个简单的-use命令✊✊)
让我们用查找命令删除文件!
删除之前
这次,使用以下命令格式执行删除。
查找[通过搜索] -Type [type] [options]'[天数或日期和时间] | xargs -p rm
“ XARGS ”接收参数(在此处删除的文件或目录),并立即将其传递给命令(RM)。
“ -p ”是显示确认提示的选项。您想删除它吗?除非您回答“ y”确认,否则它将不会消失,因此最好戴上它。
作为补充,如果要在指定的路径下删除整个目录,则需要将
-r 到 rm 这次,我不需要仅删除文件,因此我不会附加。
最后,最重要的是在删除保险保险之前指定“ LS”而不是RM。
如果您可以正确输入命令,则只能找到并显示文件,因此可以防止删除错误。
在指定的日期和时间之前删除文件
我实际上会尝试。
1。创建文件
创建了以下文件。
这次,删除2024/12/5之前更新的所有文件。
[root@localhost test_log]#ll/var/log/test_log 0 -rw-r ---------------- -r ---- 1 DEC 3 2024 File_3 -rw-r ----------------- R - 1根根0 12月6日file_6 -rw-r ------- root 0 2024 file_7 -rw-r- r-- -r-。
2。确认要删除的文件
选项“ ! - newermt 指定2024/12/5
LS而不是RM 确认
2024/12/1至12/4的(File_1〜file_4) 你想ls吗?如果您驱动“ y”,它将显示要删除的文件。
[root@localhost〜]#find/var/log/test_log -type'dec 5 2024'| file_3/var/log/log/test_log/file_4/var/log/log/test_log/file_1?。 /file_1/var/log/test_log/file_2/var/log/test_log/file_3/var/var/log/test_log/file_4
3。删除文件
如果您可以确认要正确删除的目标文件,则将被删除。
LSRM并运行命令和RM?因此,驱动的 Y
[root@localhost〜]#find/var/log/test_log -type'dec 5 2024'| file_2/var/log/log/test_log/file_3/var/var/var/log/test_log/file_4
4。检查文件
它安全消失了。
您可以看到更新的文件已在2024/12/5之前消失。
[root@localhost test_log]#ll/var/log/test_log 0 -rw-r --------------- -r ---- 1 DEC 7 2024 file_7 -rw-r ---。
指定的日期和时间之后删除文件
接下来,我想在2024/12/5之后删除所有更新的文件
1。创建文件
我像以前一样制作了一个文件。
[root@localhost test_log]#ll/var/log/test_log 0 -rw-r ---------------- -r ---- 1 DEC 3 2024 File_3 -rw-r ----------------- R - 1根根0 12月6日file_6 -rw-r ------- root 0 2024 file_7 -rw-r- r-- -r-。
2。确认要删除的文件
这次,指定
-newermt 尽管这是由日期和时间指定的复杂点在没有指定的日期和时间的情况下搜索了 !newermt ” ,而“ - newermt ”搜索,
包括指定的日期和时间因此,如果要在2024/12/5之后删除更新的文件,则必须指定2024/12/6 令人困惑。
LS而不是RM并执行命令。
你想ls吗?当您被问到时,如果您点击“ Y”,将显示要删除的文件。
您可以看到搜索2024/12/6〜12/9的更新文件(file_6〜file_9)
[root@localhost〜]#find/var/log/test_log -type f -netmt'dec 6 2024'| ile_7/var/var/log/test_log/file_8/var/var/var/log log/file_log/file_log/file_log/log log/test_log/test_log/var _6/var /log/test_log/file_7/var/test_le_8/file_8/file_8/file_8 r/log/test_log/file_9
3。删除文件
然后擦除它。
LSRM并运行命令和RM?因此,驱动的 Y
[root@localhost〜]#find/var/log/test_log -type f -newermt'dec 6 2024'| ile_7/var/var/log/test_log/file_8/var/var/var/var/log log/test_log/file_9? ............................................
4。检查文件
您可以看到2024/12/5之后创建的文件消失了。
[root@localhost test_log]# ll /var/log/test_log 总计 0 -rw-r--r--. 1 root root 0 Dec 1 2024 file_1 -rw-r--r--. 1 root root 0 Dec 2 2024 file_2 -rw-r--r--.1 根 0 2024 年 12 月 3 日 file_3 -rw-r--r--.1 根根 0 2024 年 12 月 4 日 file_4 -rw-r--r--.1 根根 0 2024 年 12 月 5 日 file_5
奖金:我想更细微地指定
如果我把步骤一一写出来,那就太长了,所以我就停下来了。
最后,我想介绍一个仅删除指定日期和时间的文件的命令。
和以前一样,假设您有一个如下所示的文件,但您只想删除 12/3~12/7。
[root@localhost test_log]#ll/var/log/test_log 0 -rw-r ---------------- -r ---- 1 DEC 3 2024 File_3 -rw-r ----------------- R - 1根根0 12月6日file_6 -rw-r ------- root 0 2024 file_7 -rw-r- r-- -r-。
和以前一样,您可以使用“-newermt”选项来指定“-newermt”Dec 3 2024”!-newermt“Dec 8 2024”等内容。这似乎很有用,因为它允许稍微更灵活的规范方法。
供你参考!
[root@localhost test_log]# find /var/log/test_log -type f -newermt "2024 年 12 月 3 日" ! -newermt "2024 年 12 月 8 日" | xargs -p rm rm /var/log/test_log/file_5 /var/log /test_log/file_3 /var/log/test_log/file_4 /var/log/test_log/file_6 /var/log/test_log/file_7?...y [root@localhost test_log]# ll /var/log/test_log 总计 0 -rw-r--r--. 1 root root 0 2024 年 12 月 1 日 file_1 -rw- r--r--.1 根根 0 2024 年 12 月 2 日 file_2 -rw-r--r--.1 根根 0 12 月 8 日2024 file_8 -rw-r--r--.1 根 0 2024 年 12 月 9 日 file_9
概括
你觉得怎么样?
这次,我们重点讨论使用find命令删除文件,但它是一个有用的命令,可以用于多种其他目的,所以我们将继续学习,以便我们能够掌握它🔥
感谢您看到最后!
参考站点:
find命令是什么?介绍如何使用Linux命令搜索文件和目录。7
个规则+实用知识,轻松了解如何使用find
-exec和find xargs |