2016-10-30 15 views
2

ファイルのリストを含むファイルがあり、各ファイルに対して2つのコマンドを実行したい。 files.txtのbash(xargs?)のファイルリストで複数のコマンドを実行する方法

内容:

file1 
file2 
file3 

私は、各ファイルに対して実行するコマンドは、(例えば)ls -sduです。

私は、出力は次のようになってしまうしたい:私はbashスクリプトを使用してこれを実行する方法を知っている

<ls size> <du size> file1 
<ls size> <du size> file2 
<ls size> <du size> file3 

が、簡単に1行にこれを行う方法があり、プロセス置換を使用しますか、何か?

は、私はこのような何かを行うことができると思ったが、それはうまくいきませんでした:これらのエラーを思い付いた

cat files.txt | tr '\n' '\0' | xargs -0 -I{} cat <(du {}) <(ls -s {}) 

du: cannot access `{}': No such file or directory 
ls: cannot access {}: No such file or directory 

はこれを行う方法はありますか?

答えて

1

あなたは、たとえば、複数のコマンドを置くことができているxargs、とshを実行することができます。

xargs -0 -I{} sh -c 'du {}; ls -s {}' 
+0

感謝を! OK、私のフォローアップの質問は、 '' du''に測定されたサイズの行の前にだけ接頭辞を付けることです。通常の方法は 'du |カット-f1 | tr --delete '\ n''ですが、一重引用符を使用することはできません.shコマンドは一重引用符を使用して引用されるためです。 'すべて'の部分を代用する方法はありますか? – localhost

+0

二重引用符で囲むことができます。 – janos

関連する問題