在使用 Linux  的时候,有时会遇到某个文件夹下有大量的小文件。如:/tmp 目录。当你使用 rm 命令来删除的时候。可能会很慢,有时会报错。例如:

root@vz101:~# rm -rf *
-bash: /bin/rm: Argument list too long

那么,你可以试试使用 rsync 来删除文件。原理就是,使用一个空目录同步到目标文件,在同步前删除。(也可以使用 xargs 。)

先创建一个空目录:

mkdir /var/empty

将空目录同步到要目标目录:

rsync --delete-before -avH /var/empty/ /tmp/

不过要注意,目录的权限问题。上面的命令会将源目录的权限也同步过去。这样目标目录的权限就可能会发生改变。

尤其对于 /tmp 目录,不正确的目录权限会导致很多问题。我本人就曾经因为同步后 /tmp 目录的权限不对,导致 Centos 系统进不了桌面。/tmp 目录的权限为:

chmod 777 /tmp
chmod u+t /tmp