Bash用の「拡張パターン」extglobを見つけました。私は単純に書くことができますディレクトリ2017/02/27
と2017/02/28
のファイルを一覧表示したい場合はBash拡張パターンでエスケープする@(..)
/basedir/2017/02/26/uniquedirs1/files.log
/basedir/2017/02/27/uniquedirs2/files.log
/basedir/2017/02/28/uniquedirs3/files.log
/basedir/2017/03/01/uniquedirs4/files.log
/basedir/2017/03/02/uniquedirs5/files.log
:
はこのようなディレクトリ構造を想像してみて:http://wiki.bash-hackers.org/syntax/pattern
私はこの事件を捜査しています:
ls /basedir/2017/02/@("27"|"28")/*/files.log
驚くばかり! \ o/
今質問があります。 Bash拡張パターンで複数のディレクトリを定義するにはどうすればよいですか?
これは動作しません:
ls /basedir/2017/@("02/28"|"03/01")/*/files.log
ls /basedir/2017/@("02\/28"|"03\/01")/*/files.log
は、私が「拡張パターン」のために複数のディレクトリを定義するために得ることができる方法はありますか?
しかし、ブレースの拡張に関する唯一の問題は、範囲を動的に定義できないことです。 – Asgair
拡張パターンではできませんので、何も失うことはありません:) – chepner
Ok。それは残念です...私はまだ効率的なソリューションには近づいていません。私が持っている唯一の問題は、ブレースの拡張を動的に定義することができないということです。サブシェルで実行しない限り、 'var1 =" 02/28,03/01 "ls/basedir/2017 /" $ var1 "/ */files.log'のようなものです。しかし、これは動作します: 'var2 =" 27 | 28 "ls/basedir/2017/02/@(" $ var2 ")/ */files.log' – Asgair