シェルスクリプト(bash)を使って指定したディレクトリのファイルを1つずつ処理する方法について説明します。
指定したディレクトリからファイルを1つずつ取得するため、繰り返し処理が必要になります。bashで1つずつファイルを取得するには、「for...in」ステートメントを利用します。
(for...inステートメントは、繰り返し処理を実装する場合に利用します)
繰り返し条件の構文は、以下の通りです。
取得条件に合致するファイルパスを変数名に格納します。
以下、サンプル。
指定したディレクトリからファイルを1つずつ取得するため、繰り返し処理が必要になります。bashで1つずつファイルを取得するには、「for...in」ステートメントを利用します。
(for...inステートメントは、繰り返し処理を実装する場合に利用します)
繰り返し条件の構文は、以下の通りです。
for 変数名 in "取得条件"
do
done
取得条件に合致するファイルパスを変数名に格納します。
以下、サンプル。
《事前準備》
1.テキストエディタを開く。
2.以下のコードを入力する。
3.ファイルを保存する。
ファイル名:test.sh
※拡張子は、「.sh」にして下さい。
ディレクトリ「/usr/local」にある全てのファイルを取得する。
《コード》
このシェルを実行すると、指定したディレクトリにあるファイルのファイルパスを出力します。
(ファイルパスは、絶対パスで表示されます)
【補足事項】
・inの後で指定する文字列は、取得するファイルの条件です。
・条件として、ディレクトリ名、ファイル名、拡張子等が指定できます。
・条件は、正規表現を使って表現できます。
例)ファイルの先頭文字が"a"のものだけ取得する場合、"ディレクトリ名/a*"とします。
・ディレクトリ内の全てのファイルを取得したい場合は、"ディレクトリ名/*"とします。
1.テキストエディタを開く。
2.以下のコードを入力する。
3.ファイルを保存する。
ファイル名:test.sh
※拡張子は、「.sh」にして下さい。
ディレクトリ「/usr/local」にある全てのファイルを取得する。
《コード》
#!/bin/sh
files="/usr/local/*"
for filepath in ${files}
do
echo ${filepath}
done
read wait
このシェルを実行すると、指定したディレクトリにあるファイルのファイルパスを出力します。
(ファイルパスは、絶対パスで表示されます)
【補足事項】
・inの後で指定する文字列は、取得するファイルの条件です。
・条件として、ディレクトリ名、ファイル名、拡張子等が指定できます。
・条件は、正規表現を使って表現できます。
例)ファイルの先頭文字が"a"のものだけ取得する場合、"ディレクトリ名/a*"とします。
・ディレクトリ内の全てのファイルを取得したい場合は、"ディレクトリ名/*"とします。
- カテゴリ:
- Linux