シェルスクリプト:ファイルのリストを得てループで処理する

bash を想定しています。

ファイルのリストアップ

ls コマンドでフルパスを得る方法が無いようなので、find コマンドを使います。

find /home/ec2-user -type f

配列に格納

ループで処理する為に、ファイルのリストを mapfile コマンドで配列に格納します。

mapfile -t files_array < <(find /home/ec2-user -type f)

ループで処理する

“${files_array[@]}” で配列の要素を展開してループします。
処理はファイルの先頭5行を出力するものにしてみました。

for file in "${files_array[@]}"; do
  head -t 5 "$file"
done

完成したスクリプト

#!/bin/bash

# findコマンドの結果を配列に格納する
mapfile -t files_array < <(find /home/ec2-user -type f)

# ファイルの先頭5行を表示する
for file in "${files_array[@]}"; do
  head -t 5 "$file"
done
シェルスクリプト基本リファレンス (Amazon)

コメント