ディレクトリ内のファイルのリストを取得する方法

ディレクトリ内のファイルのリストを取得する方法

フォルダ内にファイル名を保存するための配列/リストを作成しようとしています。次のコマンドは不明な理由で生成されます:。どのように削除できますか:

> a=$(ls split*)
> echo $a
split_sam.o4433568 split_sam.o4433616 split_sam.o4441795 split-data-1:

答え1

) コマンド$(ls split*番号作るすべてのファイル名 - 幸いにも!また、配列を生成しません。何したdoはワイルドカードを使用して呼び出し、すべての結果出力を一緒に貼り付け(各ファイル名間の改行を削除してls最後に追加)、その組み合わせを変数に割り当てます。後で電話するとsplit*lsecho $a追加望ましくないいくつかの処理が発生します。変数の内容は、スペース($ IFS)とワイルドカード拡張にさらに分割されます。運が良ければ、例えばsplit space fileまたはsplit more*

混乱の原因は、split-data-1:そのディレクトリに呼び出されたファイルがあり、そのファイルlsがユーザーに再度渡されることです。

代わりに、実際に必要なファイルに適したワイルドカードを見つけて、単純な配列割り当てを使用したいと思います。

a=(split_sam*)

または

a=(split*)

もともと作成したとおり、split-data-1:ファイルは引き続き含まれます。

その後、ファイルを繰り返すか、全体で作業することができます。

for file in "${a[@]}"
do
  ls -d -- "$file"
done

または

ls -d -- "${a[@]}"

関連情報