2011-07-15 16 views
3

複数のファイルを変換するためのBashスクリプトを作成しようとしています。ワイルドカードマッチをBashのコマンドライン引数として使用する

$ ./myscript.sh /path/to/my\ files/*.txt 

、その後:a b.txtc d.txte.txt私はこのようなスクリプトを呼び出すことができるようにする必要があり

(スペースに注意してください):

は、私は3個のテキストファイルとディレクトリ /path/to/my files/を持っていると仮定しますこれらをbashでループして次のように処理します。

dest='/desktop/' 
for ARG in [email protected]; do 
    /some/other/script $ARG $dest$ARG.new 
done 

答えて

5

これはあなたが必要なものをやるん:

dest='/desktop/' 
for ARG in "[email protected]"; do 
    /some/other/script "$ARG" "$dest$ARG.new" 
done 

EDIT: ` "$ @を"`中途半端そこに私を得たARG

dest='/desktop/' 
for ARG in "[email protected]"; do 
    /some/other/script "$ARG" "$dest$(basename "$ARG").new" 
done 
+0

をパスを削除するには。理想的には、私は '$ dest $ ARG'に巨大なパスがないように、$ ARGにファイル名だけを持たせたいと思います。これを行う簡単な方法はありますか? – Dex

+0

恐ろしい!....... – Dex

+1

'ARGのために短縮することさえできます。' - デフォルトで '$ @'を使います。 – l0b0

1

Bashはコマンドを実行する前にワイルドカード拡張を行います。つまり、その式を一致するファイルのリストで置き換えます。

関連する問題