此命令列出与提供的名称匹配的所有文件:
find . -iname .DS_Store
但是当我使用-delete
参数时,我看不到已删除文件的列表。他们只是被删除了。
| xarg ..
最好不要使用or使其变得复杂-exec rm {}
,是否有任何神奇的标志可以在使用时查看已删除的文件find . -iname .DS_Store -delete
?
PS:我知道我可以在没有删除标志的情况下运行该命令,但我正在寻找类似的东西print0
(尽管打印起来很难看)来完成工作。
答案1
-print
只需在命令末尾添加:
find . -name .DS_Store -delete -print
这将输出找到的文件的路径名。
如果这是在 macOS 系统(或任何 BSD 系统)上,使用find
那里的默认实现,则-delete
谓词总是回报真的,这意味着该规则-print
也将始终生效。这意味着上面的命令将打印所有找到的路径名,无论它们是否被成功删除。-delete
GNU 中的谓词将find
返回错误的如果该名称无法删除。
如果您使用的是 macOS 或 BSD 系统,并且这对您很重要,请使用
find . ! -type d -name .DS_Store -exec rm {} \; -print
反而。在这里,rm
如果未能删除给定名称,则将返回非零退出状态,这反过来意味着-print
该路径名不会生效。我还添加了! -type d
因为rm
只删除非目录(不使用时rm -r
)。