2017-02-17 10 views
1

bashでは、特定のディレクトリのすべてのファイル名を配列に入れる必要があります。さらに、私のディレクトリに3つのファイル:file1.txtfile2.txtfile3.txtがある場合は、各ファイルが配列内の1つの要素になるようにする必要があります。ディレクトリ内のすべてのファイル名を配列に入れよう

echo $arr 
{file1.txt, file2.txt, file3.txt} 

答えて

5

var=(...)で配列変数を作成します。現在のディレクトリ内のすべてのファイルのグロブは*です。一緒:

for file in "${files[@]}"; do 
    echo "$file" 
done 

またはアクセス個々の要素:

echo "${files[0]}" 
echo "${files[1]}" 
echo "${files[2]}" 

注二重引用符の賢明な使用

files=(*) 
echo "${files[@]}" 

あなたは、配列をループすることができます。それらは、空白やその他の特殊文字を含むファイルが正しく扱われるようにします。

+2

配列は、 '*'要素を取得して終了しないように、それは '(*)=ファイル'前に 'shopt -s nullglob'を設定することが良いことです空のディレクトリ。 – codeforester

0

ほとんどのシンプルなソリューションを使用することです:

shopt -s nullglob dotglob 
files=(*) 
関連する問題