私はこのコマンドを使用して、files=( $(ls "/path/wanted") )
ディレクトリ内のすべてのファイル名を配列として保存します。ただし、空白文字を含むファイル名は複数の配列エントリを生成します。
それを調べるには:
ls /path/wanted something.txt spaced name
${#files[@]} 3
完全なファイル名を各配列の場所にマッピングするにはどうすればよいですか?
答え1
shopt -s nullglob # enable nullglob
#shopt -s dotglob # enable dotglob too if desired
cd /path/wanted
files=( * )
cd -
# do something with "${files[@]}" or "${#files[@]}"
shopt -u nullglob # disable nullglob
#shopt -u dotglob # disable dotglob if enabled
無効(デフォルト)の場合、ディレクトリにファイルがない場合、配列にはnullglob
globパターンを含む要素が含まれます。有効*
にすると、nullglob
配列は空になります。
同様に適用されますdotglob
。無効にすると、ドットファイルは同様のパターンと明示的に一致する必要があります.[^.]*
([^.]
いいえ現在のディレクトリ.
と親ディレクトリと一致します..
。)有効にすると、dotglob
このパターンはドット*
で始まるファイルとも一致します。
関連: