検索に関する警告が重要なのはなぜですか?

検索に関する警告が重要なのはなぜですか?

私はBrian Wardの「How Linux Works」を読んでいましたが、彼は「この形式を理解するまで-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


PS。ファイルシステムの重要な部分から危険なコマンドの実行を回復したい場合は、次のことができます。おそらくランニングfind -depth -type d -print0 | while IFS= read -r -d '' d; do mv "$d" "${d%.surprise}"; done。しかし、安全な場所で試してみることをお勧めします/tmp

おすすめ記事