ディレクトリ構造をコピーして単にコピーするのではなく、各ファイルにコマンドを適用しますか?

ディレクトリ構造をコピーして単にコピーするのではなく、各ファイルにコマンドを適用しますか?

時間が経つにつれて、私は同じパターンを繰り返し経験しました。一種のディレクトリ構造がありました。

example/
├── a
│   └── c
│       ├── d.txt (120k)
│       └── e.txt (60k)
└── b
    └── f.txt (280k)

example_greppedたとえば、各ファイルにコマンドを適用して、ファイルを別のディレクトリに「コピー」したいとします。cpたとえばgrep ERROR、構造は同じですが、ファイルがgrep

example_grepped/
├── a
│   └── c
│       ├── d.txt (1k)
│       └── e.txt (0b)
└── b
    └── f.txt (12k)

メディアファイル(FLACからMP3へ、PNGからJPGへ)を変換するのと同じパターンです。今回は、ビルドプロセス中にさまざまなアーキテクチャ形式を変換します。

使用できる一般的なコマンドはありますか?foobar example example_grepped --command 'grep ERROR'またはに似ていますかfoobar flacs mp3s --command 'ffmpeg -i {} {}.mp3'

たぶん謙虚なxargs旗でしょうか? (パイプfindxargsほぼ十分ですが、ほとんどのコマンドは、ディレクトリ構造がすでに存在すると予想しています。 )

ベストアンサー1

ディレクトリ構造を別々に再作成せずに私が見つけることができる最も近い答えは、次のものを使用することです。インストールする:

cd example
find . -type f -exec sh -c 'grep ERROR {} | install -D /dev/stdin /tmp/example_grepped/{}' \;

残念ながら、上記の方法はコマンドが結果をSTDOUTに送信できる場合にのみ機能します。

おすすめ記事