linux 用 rsync 快速删除大量小文件

假设我们在目录 /tmp/to_delete 下有很多小文件

a1  a2  a3  f1  f2  f3

现在我们想快速的删除f 开头的文件。 如果文件量大,用rm 可能会失败,而且会很慢, 所以用rsync。 步骤如下:

创建一个空目录

mkdir /tmp/some

输入命令

rsync --delete-before -d --include="f*"  --exclude="*"  /tmp/some/ /tmp/to_delete/

通过以上步骤,可以快速的删除/tmp/to_delete下f开头的文件。 rsync 本身是同步不同目录的软件。

--include 和 --exclude 是用通配符来过滤需要操作的文件,顺序必须如上

如果你要过滤的文件名称太复杂,没办法用通配符表示,可以把要删除的文件名列出来,放入一个文件。 如下:

把要删除的文件名,存入文件 i.txt

[root@ES01 to_delete]# cat i.txt
f1
f2
f3

把要排除的文件名,存入文件e.txt

[root@ES01 to_delete]# cat e.txt
*

然后用命令

    rsync --delete-before -d --include-from=./i.txt  --exclude-from=./e.txt  /tmp/some/ /tmp/to_delete/

posted on 2016-05-05 15:05  kramer  阅读(1343)  评论(0编辑  收藏  举报

导航