我正在阅读 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
。