質問

いくつかのファイルに簡単なテキストを追加したいと考えています。具体的には、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によって処理されるためです。技術的には、実行する代わりに ジェネラコディセタグプレ

実行できます ジェネラコディセタグプレ

しかし、書く方が簡単だと思います: ジェネラコディセタグプレ

(これは、恐れることはありませんが、スペースと改行を処理し、文字を制御します)。

他のヒント

これはどうですか- ジェネラコディセタグプレ

または ジェネラコディセタグプレ

echoshell 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 {} \;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top