これを使用して、毎回異なるファイルを引数としてスクリプトをn回実行しようとしていました:
ls /user/local/*.log | xargs script.pl
(script.pl は引数としてファイル名を受け入れます)
ただし、スクリプトは 1 回だけ実行されます。これを解決するには?私はそれを正しくしていませんか?
ls /user/local/*.log | xargs -rn1 script.pl
あなたのスクリプトは1つのパラメータしか期待していないと思います.xargsにそれを伝える必要があります.
-r を渡すと、入力リストが空になる場合に役立ちます
一般的には、次のような方がよいことに注意してください。
find /user/local/ -maxdepth 1 -type f -name '*.log' -print0 |
xargs -0rn1 script.pl
引用符とディレクトリをより安全に処理します。
xargs が実際に実行する内容を確認するには、-t
フラグを使用します。
ls
これは多くのシステムでエイリアスであることが多いため、使用は避けます。たとえば、ls
色付きの出力を生成する場合、これは機能しませんls
。do ls $ i; done
むしろ、シェルにワイルドカードを展開させることができます。fori in /usr/local/*.log; script.pl$iを実行します。終わり
これが役立つことを願っています:
for i in $(ls /usr/local/*.log)
do
script.pl $i
done