特定のファイル名を持つすべてのファイルをテキストで(再帰的に)埋める必要があります。 zshでは、次のようにできます。
echo SomeText > **/TheFileName
sh互換および/またはtcshシェルの汎用ソリューションを検索します。次のコマンドより短くて簡単な方法はありますか?
find . -name "TheFileName" -print0 | xargs -0 sed -n -i -e '1c\nSomeText'
答え1
find . -name TheFileName -type f -exec sh -c 'for i do
echo SomeText > "$i"; done' sh {} +
答え2
次の目的で使用できますtee
。
シェルが正しく一致し、**/TheFileName
問題は各ファイルの内容をインポートするだけです。
echo SomeText | tee **/TheFileName >/dev/null
問題が**/TheFileName
間違った一致の場合は、次のものを使用できますfind
。
echo SomeText | find . -name TheFileName -exec tee {} + >/dev/null
find
1つもない場合は、ここの-exec +
他のソリューションが適しています。
ファイル数が多い場合(より大きい場合getconf ARG_MAX
)でも機能しません。
答え3
やや短い:
find . -name TheFileName -type f -exec sed -n -i -e '1c SomeText' {} +