为什么有关 find 的警告很重要?

为什么有关 find 的警告很重要?

我正在阅读 Brian Ward 撰写的《Linux 工作原理》,他发出了以下警告“在您熟记此形式之前,请勿尝试诸如 -exec 之类的选项” find -name file -print

到目前为止,我还不明白为什么这种形式如此重要。为什么我不想在特定位置搜索目录,无论其名称如何。另外,在我看来 -print 是默认选项,并且联机帮助页强烈建议使用 -print0,因为某些文件名可能包含换行符。

答案1

作者警告读者不要在-exec不了解该命令的结构和方法的情况下进行尝试find

find -type d -print例如,尝试一下并没有什么坏处。警告但你知道如果你运行这个会发生什么吗find -depth -type d -exec mv {} {}.surprise \;

如果您想查看会发生什么,请将 替换(或补充)mv为不执行永久操作的命令:

find -depth -type d -exec echo mv {} {}.surprise \;

对于-print0,这仅在管道内工作时有用。 (但是当您的其他实用程序支持其 NUL 分隔记录时,它非常有用。)如果您只想列出输出find以进行目视检查,请改用-print


附言。当您想从在文件系统的重要部分运行危险命令中恢复时,您可以大概跑步find -depth -type d -print0 | while IFS= read -r -d '' d; do mv "$d" "${d%.surprise}"; done。但最好还是在安全的地方尝试一下/tmp

相关内容