bashのfor文を使ってディレクトリ内のファイル一覧とディレクトリ一覧を出力

指定したディレクトリ内のファイルのパス一覧とディレクトリのパス一覧を出力するスクリプトを作成しました。

このスクリプトでは、①指定したディレクトリ内のファイル(ディレクトリ)一覧取得、②ファイルとディレクトリの判定、③配列への代入、④配列の表示を行っています。
 
①ファイル一覧を取得
 
“/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
関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください