2017-06-13 18 views
1

すべてのファイルをいくつかのディレクトリにリストしたいので、すべてのディレクトリの配列を作成してループ内に再帰的にリストしたいと思います。しかし、変数内のファイルパターンを使用してファイルを一覧表示する[BASH]

ls /home/user/{*.txt,*.sh} 

すべてのファイルを正しく一覧表示します。しかし、私が使用すると、それがないというエラーが表示されます。また、location="/home/user/*.sh"しかなければ、2番目の方法はうまくいきます。助けてもらえますか?

答えて

4

これは、変数置換の前に中括弧拡張が行われているためです。

https://www.gnu.org/software/bash/manual/html_node/Shell-Expansions.html#Shell-Expansions

たぶん、次の回避策は、拡張されたグロブ

shopt -s extglob 
location="/home/user/*[email protected](txt|sh)" 
ls $location 

または

location="/home/user/@(*.txt|*.sh)" 
+0

ニートとシンプルを使用して助けることができます。拡張正規表現のフィールドについて知りませんでした。ありがとう!それについての詳細[ここ](http://www.linuxjournal.com/content/bash-extended-globbing) –

+0

これは正規表現ではなく、グロブパターンではなく、タイトルが明確になるように更新することができる場合は、別の構文(弱い)です。質問では、中括拡張です。 –

関連する問題