我的 Linux 机器上有一个目录,里面有 10000 多个我必须删除的文件。跑步...
sudo rm -rf /var/tmp/*
Run Code Online (Sandbox Code Playgroud)
给出错误信息...
sudo: unable to execute /bin/rm: Argument list too long
Run Code Online (Sandbox Code Playgroud)
解决这个问题的方法是运行
sudo find /var/tmp | xargs sudo rm
Run Code Online (Sandbox Code Playgroud)
这仅适用于文件名中没有空格的文件。但是,某些文件的名称中带有空格,它们不会被删除。例如,如果一个文件名为“A File With Spaces in the Name.dat”,运行该命令会给我这样的错误......
rm: cannot remove `/var/tmp/A': No such file or directory
rm: cannot remove `File': No such file or directory
rm: cannot remove `With': No such file or directory
rm: cannot remove `Spaces': No such file or directory
rm: cannot remove `in': No such file or directory
rm: cannot remove `the': No such file or directory
rm: cannot remove `Name.dat': No such file or directory
Run Code Online (Sandbox Code Playgroud)
如何将完整的文件路径传递给 xargs sudo rm 而不破坏文件名。
告诉find并xargs使用不同的文件分隔符:
find /var/tmp -print0 | sudo xargs -0 rm
Run Code Online (Sandbox Code Playgroud)
或者告诉直接find执行rm:
sudo find /var/tmp -exec rm {} +
Run Code Online (Sandbox Code Playgroud)
或者告诉find只是删除文件:
sudo find /var/tmp -delete
Run Code Online (Sandbox Code Playgroud)
注意:-mindepth 1可能有用,以避免删除/var/tmp目录本身。
...或者真的,只需删除*,如果您首先要使用递归模式,则没有必要。
sudo rm -rf /var/tmp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4047 次 |
| 最近记录: |