ファイルを bash の配列に読み込むのに問題があります。
ls -1 オプションの使用を推奨していない人がいることに気付きました。これを回避する方法はありますか?
ファイルのリストを取得する最も信頼できる方法は、シェルのワイルドカードを使用することです。
# First set bash option to avoid
# unmatched patterns expand as result values
shopt -s nullglob
# Then store matching file names into array
filearray=( * )
現在のディレクトリ以外の場所にファイルを取得する必要がある場合は、次を使用します。
filearray=( "$dir"/* )
スペースやその他の特殊文字が含まれている場合は、ディレクトリ パスを二重引用符で囲む必要がありますが*
、ファイル リストに展開できないか、展開されないことに注意してください。また、これにより、名前だけでなく、ファイルへのパスが配列に入力されます (たとえば、$dir
「path/to/directory」の場合、filearray には「path/to/directory/file1」、「path/to/directory/file2」が含まれます)。 」など)。ファイル名だけが必要な場合は、パスのプレフィックスを次のようにトリミングできます。
filearray=( "$dir"/* )
filearray=( "${filearray[@]##*/}" )
ファイルをサブディレクトリに含める必要がある場合は、少し複雑になります。この前の回答を参照してください。