shell でディレクトリ内のファイルに対してループ処理

  • 59
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

あるディレクトリ内でファイル一覧に対して同じ処理をしたい時のループの書き方

for file in `\find . -maxdepth 1 -type f`; do
    # TODO
done

\find . -maxdepth 1 -type f
カレントディレクトリの’ファイル’のみを取得している

\ls -F | grep -v /
でもファイルを絞り込めるが実行可能ファイルに「*」がついたりする

中身を結合してファイルに出力

for file in `\find . -maxdepth 1 -type f`; do
    cat $file >> out
done

再帰的にtxt のみファイルに出力して削除

for file in `\find . -name '*.txt'`; do
    cat $file >> out
    rm $file
done

png のみ バッグアップ

for file in `\find . -maxdepth 1 -name '*.png'`; do
    cp $file $file.tmp
done