我想递归地从特定目录中删除文件。所以,我用了
find . -wholename "*.txt" -delete
我们还可以使用删除文件
rm -rf *.txt
使用rm
和find
删除文件有什么区别?
最佳答案
查找 . -name abd.txt -delete
尝试删除 目录树中名为
abd.txt
的所有文件。
查找 . -wholename abd.txt -delete
尝试删除 目录树中某处完整路径名为
abd.txt
的所有文件。
这样的文件永远不会存在:当使用 find .
时,找到的所有文件的完整路径名都将以 ./
开头,因此即使当前目录中名为abd.txt
将具有路径 ./abd.txt
,并且它不会匹配。
查找 . -wholename ./abd.txt -delete
将删除当前目录中名为abd.txt
的文件。
find -wholename ./abd.txt -delete
也会执行相同的操作。
如果 abd.txt
是非空目录,删除将会失败。
(我刚刚使用 GNU find 4.6.0 尝试了上述操作;其他版本的行为可能有所不同。)
rm -rf abd.txt
还会尝试删除当前目录中的 abd.txt
,如果是非空目录,则会删除它,以及所有内容就在其中。
要使用 find
执行此操作,您可以使用
查找 . -深度\(-全名./abd.txt -o -全名./abd.txt/\*\)-删除
关于unix - 'find -delete' 和 'rm -rf' 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11292146/