アレイ構成時の空間ファイル名のトラブルシューティング

アレイ構成時の空間ファイル名のトラブルシューティング

私はこのコマンドを使用して、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

無効(デフォルト)の場合、ディレクトリにファイルがない場合、配列にはnullglobglobパターンを含む要素が含まれます。有効*にすると、nullglob配列は空になります。

同様に適用されますdotglob。無効にすると、ドットファイルは同様のパターンと明示的に一致する必要があります.[^.]*[^.]いいえ現在のディレクトリ.と親ディレクトリと一致します..。)有効にすると、dotglobこのパターンはドット*で始まるファイルとも一致します。

関連:

関連情報