指定したディレクトリ内のファイルのパス一覧とディレクトリのパス一覧を出力するスクリプトを作成しました。
このスクリプトでは、①指定したディレクトリ内のファイル(ディレクトリ)一覧取得、②ファイルとディレクトリの判定、③配列への代入、④配列の表示を行っています。
①ファイル一覧を取得
“/home/user/”というディレクトリ配下のファイル一覧を表示する例です。
files="/home/user/*" for filepath in $files; do echo $filepath done
②ファイルとディレクトリの判定
・通常のファイルであるか判定
if [ -f $filepath ]
・ディレクトリであるか判定
if [ -d $filepath ]
③配列への代入
・空の配列を作成
fileary=()
・配列に要素を追加
変数$filepathの中身をfileary配列に追加
fileary+=(“$filepath”)
④配列の要素を参照、表示
・i番目の配列要素を参照
${fileary[i]}
・配列のすべての要素を表示
@というインデックスを使う
for i in ${fileary[@]}; do
echo $i
done
●サンプルコード
ファイル(ディレクトリを含む)一覧を取得し、ファイルとディレクトリに分けて配列に代入し、ファイルとディレクトリに分けて一覧を表示する。
#!/bin/bash
files="/home/user/*"
fileary=()
dirary=()
for filepath in $files; do
if [ -f $filepath ] ; then
fileary+=("$filepath")
elif [ -d $filepath ] ; then
dirary+=("$filepath")
fi
done
echo "ファイル一覧"
for i in ${fileary[@]}; do
echo $i
done
echo "ディレクトリ一覧"
for i in ${dirary[@]}; do
echo $i
done
関連記事の目次- bashのシェルスクリプト実行方法
- bashのシェルスクリプト プログラミング方法メモ
- bashのパイプの使い方
- bashのlist、サブシェル、コマンドブロック
- bashでの式の評価と算術演算
- bashでパターンマッチを使って条件評価
- bashのfor文で配列やセパレータ付き文字列から各要素を取り出す
- bashのfor文を使ってディレクトリ内のファイル一覧とディレクトリ一覧を出力
- bashのselect制御構造
- bashのパターンマッチ演算子の使い方
- ファイルの中身を一行ずつ読んで文字列を置換するbashスクリプト
- ディスク使用量が多いディレクトリを抽出するbashスクリプト
- ディレクトリ内の複数のファイルに対しファイル内の文字列を置換するbashスクリプト
- Bashスクリプトでmysqldumpバックアップと世代管理
- Dos攻撃など大量アクセスのログを検知するBashスクリプトを作成