各サブディレクトリにテキストファイルを生成する

各サブディレクトリにテキストファイルを生成する

たとえば、というディレクトリ階層abcとテキストファイルがありますnames.txt。テキストファイルから数行を選択し、各サブディレクトリにサンプルテキストを含む新しいファイルを作成する必要があります。たとえば、abc選択した各行names.txtは次のようになります。新しいファイルの1つの名前。xargsorを使用して1行でこれを行う必要があります-exec。次のように試しましたが、うまくいかないようです。

find abc -type d -exec sh -c 'grep ^'A' names.txt | xargs -I% sh -c 'echo 'Hello world' | tee {}/%'' \;

これを正しい方法で行う方法は?

ベストアンサー1

ディレクトリに必要なものから始めましょう。

awk '/^A/ { print "Hello world" >$0 }' names.txt

入力行が大文字で始まる場合は、呼び出されたファイルを読み取り、names.txtそのファイルの完全な入力行によって提供される各ファイル名に文字列を書き込みます。Hello worldA

わずかに変更するだけで、特定のディレクトリのファイルに出力することができます$dirname

awk -v dir="$dirname" '/^A/ { print "Hello world" >(dir "/" $0) }' names.txt

findその後、すべてのサブディレクトリ(起動ディレクトリを含む)に対してそれを呼び出すことができます。

find abc -type d -exec awk -v dir={} '/^A/ { print "Hello world" >(dir "/" $0) }' names.txt \;

おすすめ記事