我有一个目录:
$ tree
.
|-- CVS
| |-- Entries
| |-- Entries.Log
| |-- Repository
| `-- Root
|-- dirA
| |-- CVS
| | |-- Entries
| | |-- Repository
| | `-- Root
| |-- file1
| `-- file2
|-- dirB
| |-- CVS
| | |-- Entries
| | |-- Repository
| | `-- Root
| |-- file3
| `-- file4
|-- file5
`-- file6
我可以使用以下命令找到我想要删除的所有文件:
$ find . -name CVS -prune -o -type f -print
但如果我-print
改为-delete
$ find . -name CVS -prune -o -type f -delete
一切都消失了。为什么?
答案1
查看 的手册页find
,位于-delete
:
在测试稍后打算与 -delete 一起使用的 find 命令行时,应明确指定 -depth 以避免以后出现意外。由于 -delete 隐含 -depth,因此不能同时使用 -prune 和 -delete。
在这种情况下,您很可能只需使用-exec rm {} +
而不是-delete
来做您想做的事情,但就像玩火时一样:非常在努力之前确保它能正常工作。