13,005
回編集
細 (Wiki がページ「シェルスクリプトの基礎 - ファイルやディレクトリの存在確認」を「シェルスクリプトの基礎 - ファイルとディレクトリ」に、リダイレクトを残さずに移動しました) |
編集の要約なし |
||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
シェルスクリプトにおいて、ファイルとディレクトリに関する処理を記載する。<br> | |||
<br><br> | <br><br> | ||
29行目: | 28行目: | ||
if [ ! -e $FILE ];then | if [ ! -e $FILE ];then | ||
echo "File not exists." | echo "File not exists." | ||
exit -1 | |||
fi | fi | ||
</source> | </source> | ||
58行目: | 58行目: | ||
if [ ! -d $DIR ];then | if [ ! -d $DIR ];then | ||
echo "Directory not exists." | echo "Directory not exists." | ||
exit -1 | |||
fi | fi | ||
</source> | </source> | ||
111行目: | 112行目: | ||
|} | |} | ||
</center> | </center> | ||
<br><br> | |||
== ファイルの処理 == | |||
==== ワイルドカードの使用 ==== | |||
ワイルドカード(*)を使用して、カレントディレクトリ内のファイルを順に処理することができる。 | |||
以下の例では、全てのファイルを繰り返し処理している。 | |||
<source lang="sh"> | |||
for FILENAME in *; do | |||
echo "$FILENAME" | |||
done | |||
</source> | |||
<br> | |||
特定の拡張子を持つファイルのみを列挙する場合は、以下のように記述する。 | |||
以下の例では、全てのPNGファイルを繰り返し処理している。 | |||
<source lang="sh"> | |||
for PNGFILE in *.png; do | |||
echo "$PNGFILE" | |||
done | |||
</source> | |||
<br> | |||
また、次のように1行で記述することもできる。 | |||
<source lang="sh"> | |||
for PNGFILE in *.png; do echo "$PNGFILE"; done | |||
</source> | |||
<br> | |||
==== findコマンドの結果の使用(再帰処理) ==== | |||
以下の例では、findコマンドで検索したファイルを、while文で順に処理している。 | |||
深い階層にあるファイルも再帰的に処理される。 | |||
<source lang="sh"> | |||
find . -type f | while read FILENAME; do | |||
echo "$FILENAME" | |||
done | |||
</source> | |||
<br><br> | |||
== テキストファイルの読み込み == | |||
while文とreadコマンドを組み合わせて使用すると、テキストファイルの内容を1行ずつ処理できる。 | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:シェルスクリプト]] | [[カテゴリ:シェルスクリプト]] |