find を使用してテキストを複数のファイルにエコーする
-
27-10-2019 - |
質問
いくつかのファイルに簡単なテキストを追加したいと考えています。具体的には、Linux lpfc ドライバーでこれを実行します。
ls -1 /sys/class/scsi_host/host* | awk -F '@' '{system("echo 0x0 > "$1"/lpfc_log_verbose")}'
しかし、一般的なケースを考えると、ファイル名内のスペースを処理する必要があります。そこで私は次のことを見つけました。
find -L /sys/class/scsi_host -nowarn -maxdepth 2 -type f -name 'lpfc_log_verbose' -exec echo 0x0 > {} \; 2>/dev/null
しかし、これはうまくいかないようです。
find -L /sys/class/scsi_host -maxdepth 2 -type f -name 'lpfc_log_verbose' -exec cat {} \; 2>/dev/null
問題ありませんが、編集が成功しなかったことを示しています。では、find -exec でリダイレクトを使用できますか?正しい回避策は何ですか?
解決
では、find -execでリダイレクトを使用できますか?
いいえ、
> {}
は、find
を呼び出す前にBashによって処理されるためです。技術的には、実行する代わりに ジェネラコディセタグプレ実行できます ジェネラコディセタグプレ
しかし、書く方が簡単だと思います: ジェネラコディセタグプレ
(これは、恐れることはありませんが、スペースと改行を処理し、文字を制御します)。
他のヒント
これはどうですか- ジェネラコディセタグプレ
または ジェネラコディセタグプレ
echo
はshell built-in
であるため、-exec
と直接使用することはできません。ただし、次のことができます-
ジェネラコディセタグプレ
これを行う簡単な方法は、to_be_write コンテンツを一時/ダミー ファイルに書き込んで、次を使用することです。 cp
exec 内でコンテンツを宛先ファイルにコピーするには
cp
うまく機能し、拡張されます {}
内部 -exec
エコー/リダイレクトが機能しない間
echo 1 > /tmp/dummy
find /sys/kernel/debug/tracing -name enable -exec cp /tmp/dummy {} \;
所属していません StackOverflow