bashでディレクトリ内の特定のファイルを配列に入れる方法は?

bashでディレクトリ内の特定のファイルを配列に入れる方法は?

file1.txt、file2.txt、およびfile3.txtという3つのファイルがあるディレクトリがあるとします。

では、これらのファイル名で配列をどのように入力できますか? (すべてのファイルには特定のプレフィックス、つまりファイルがあり、ファイルの後に1、2、3などにすることができます)。

答え1

GregのWikiから:Bashガイド配列の項目:

files=()
while read -r -d $'\0'; do
    files+=("$REPLY")
done < <(find *.txt -print0)

ページには配列の詳細な説明があり、構造要素を要素別に分類して全体を読む価値があります。

答え2

ファイルがすべて同じディレクトリにある場合、jasonwryanの答えに加えて、いくつかの異なるオプションがあります。

グローバル使用:

files=(file[0-9].txt)

質問のサンプルファイルのみが一致します。

files=(file[1-3].txt)

bashバージョン4以降の場合は、再帰的にglobを実行することもできます。

shopt -s globstar
files=(**/file[0-9].txt)

中かっこ拡張を使用して、サンプルファイルのみを含めるように配列を制限します。

files=(file{1..3}.txt)

他の2つの例とは異なり、これはファイル名が存在しなくても配列をファイル名で埋めます。したがって、ステント拡張は理想的ではないかもしれない。

関連情報