unix - 'find -delete' 和 'rm -rf' 之间的区别?

标签 unix delete-file rm

我想递归地从特定目录中删除文件。所以,我用了

find . -wholename "*.txt" -delete

我们还可以使用删除文件

rm -rf *.txt

使用rmfind删除文件有什么区别?

最佳答案

查找 . -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/

相关文章:

php - 检查 curl http 命令

c++ - 对使用 Unix 的 C++ 中的单独目录的 #include 感到困惑

linux - 防止 "rm -rf"

c - 一个守护进程,该守护进程在信号处理程序中杀死子进程并在c/unix中派生一个新进程

linux - unix格式化输出变量

file - 删除两个 : hidden and normal files with cmd

android - 根据创建日期删除文件

python - 使用rm命令删除文件

linux - 识别并删除所有 x64 架构文件

bash - 捕获 "rm: fts_read: No such file or directory"错误并继续