for

[Linux] Bashでファイル一覧を順番に処理したい

Bashで特定のファイルを順番に処理したい場合、配列をforでぐるぐる回してやるのがお手軽です。ここでは配列listで定義した3つのファイルを順番に指定ディレクトリへコピーしています。

#!/bin/bash

# 対象のファイル一覧
list=(
  /tmp/foo.txt
  /tmp/bar.txt
  /tmp/hoge.txt
);

# 順番に処理する
for file in ${list[@]}; do
  echo "copy ${file} to /home/foo"
  cp $file /home/foo
done

続きを読む

[Linux] Bashでlsやfindの実行結果を1件ずつ処理したい

Bashでlsなどコマンドの実行結果を順番に処理したい場合は以下のようにforでぐるぐる回してやるだけです。

#!/bin/bash

for file in `ls /tmp/*.json`; do
  echo "copy ${file} to /home/foo"
  cp $file /home/foo
done

ここでは「/tmp」ディレクトリ配下にある拡張子が.jsonのファイルを順番に指定ディレクトリへコピーしています。対象のファイルが存在しない場合は何もしません。
続きを読む