我有一个文件夹,里面有 137795 个文件。我需要将它们全部删除。当我跑步时,rm *
我得到了-bash: /bin/rm: Argument list too long
。我该如何克服这个错误?
答案1
正如我所看到的,您不需要删除 dir ,只需删除里面的文件。所以你可以重新创建它
rm -r /path/to/dir && mkdir /path/to/dir
甚至只删除里面的文件
find /path/to/dir -type f -delete
公平的第一个工作得更快。
UPD。请注意,从空间消耗的角度来看, with 的方式find
可能不是最佳的,因为目录大小只有在fsck
.细节。
答案2
解决方法#1:
find /path/to/dir -delete
解决方法#2:
rm a*;
rm b*;
rm c*;
etc
答案3
使用find
可能是最好的选择。其他答案的一些问题要么不删除目录内的所有内容,要么删除目录本身。如果没有特殊字符,您可以ls
与 一起使用,或者与某些选项一起使用。xargs
find
ls -1 | xargs rm -r
或者
find . -depth -path ./.* -prune -o -not -name . -delete
这将忽略当前目录中以.
( -prune
) 开头的任何内容,并将删除任何其他文件或目录,只要它不是顶级目录 ( .
)。将-depth
首先查看目录内部,这将避免“目录不为空”错误。如果该-not
参数在您的系统上不可用,则使用!
。