获取通过 find -delete 删除的文件列表

Ema*_*res 13 shell find delete

此命令列出与提供的名称匹配的所有文件:

find . -iname .DS_Store
Run Code Online (Sandbox Code Playgroud)

但是当我使用-delete参数时,我看不到已删除文件的列表。他们只是被删除。

最好不要使用| xarg ..或使其复杂化-exec rm {},使用时是否有任何魔术标志可以查看已删除的文件find . -iname .DS_Store -delete?

PS:我知道我之前可以在没有删除标志的情况下运行命令,但我正在寻找类似的东西print0(虽然打印丑陋)来完成工作。

Kus*_*nda 17

只需添加-print到命令的末尾:

find . -name .DS_Store -delete -print
Run Code Online (Sandbox Code Playgroud)

这将输出找到的文件的路径名。

如果这是在 macOS 系统(或任何 BSD 系统)上,使用find那里的默认实现,则-delete谓词始终返回true,这意味着 也-print将始终生效。这意味着上面的命令将打印所有找到的路径名,无论它们是否被成功删除。如果无法删除名称-delete,GNU 中的谓词find将返回false。

如果您使用的是 macOS 或 BSD 系统,并且这对您很重要,请使用

find . ! -type d -name .DS_Store -exec rm {} \; -print
Run Code Online (Sandbox Code Playgroud)

反而。在这里,rm如果无法删除给定的名称,将返回非零退出状态,这反过来意味着-print将不会对该路径名生效。我还添加了! -type d因为rm只删除非目录(不使用时rm -r)。