「*」を使用してすべての例外をキャッチする方法

「*」を使用してすべての例外をキャッチする方法

たとえば、次のようなファイルがあります。

A_1.txt A_t_1.txt A_ts_1.txt A_tsa_1.txt

ディレクトリに~/admin/packages/

A_1.txtにワイルドカードを渡すためにforループを作成しています。

for f in ~/admin/packages/*_1.txt

明らかに、これはこれらのファイルの1つにワイルドカードとして使用できます。

t具体的に、先に、 がないかぎりすべてのファイルを glob するために「除外」コマンド (ある場合) を使いたいと思いますsa_1.txt

編集:パスを変数として保存することを忘れました。

PROJECT="~/admin/packages/*_1.txt"

for f in ${PROJECT}...

ベストアンサー1

extglobこれを行うには、次のパターンを使用できますbash

!(*t|*s|*a)_1.txt

extglobまず有効にします(まだ有効になっていない場合)。

shopt -s extglob

これにより、次のことができます。

for f in ~/admin/packages/!(*t|*s|*a)_1.txt; do ##Something; done

例:

$ echo *_1.txt
A_1.txt Ab_1.txt A_t_1.txt A_ts_1.txt A_tsa_1.txt

$ shopt -s extglob

$ echo !(*t|*s|*a)_1.txt
A_1.txt Ab_1.txt

短くしてください(ありがとうございます錯乱):

!(*[tsa])_1.txt

おすすめ記事