2017-05-07 4 views
2

find . -iname "*.txt" -exec program '{}' \; | sed 's/Value= //'Linuxは-execつ以上の

を見つける - 「プログラム」は、ファイルごとに異なる値を返し、出力は"Value= "

が付いているこの時点では、出力はSED後"Value= 128"となりますちょうど128

にはどうすればいいだけの価値"128"を取ると、入力ファイルは の.txt 128に改名されていなく、これは実行が複数のファイルを考えて見つけてきたことができます。

申し訳ありません。 必要であれば、私は

答えて

0

まず、引数の名前を変更できるシェルスクリプトを書く明らかにしようとします:

mv "$1" "$(program "$1" | sed "s/Value= //").txt" 

は、その後、あなたのfindコマンドでそのスクリプトを埋め込む:

find . -iname "*.txt" \ 
    -exec sh -c 'mv "$1" "$(program "$1" | sed "s/Value= //").txt"' _ {} \;