シェルプログラミング - lsでファイル一覧を取得して1ファイルづつ処理する

やりたいことは

特定のフォルダのファイル一覧を取得して、1ファイルづつ何らかの処理をしたい

ここまでできればあとは何をするかによる

#!/bin/bash
FILE_LIST=(`ls -a *.txt`) # 現在のディレクトリ内のファイルを配列にする

# FILE_LIST[@]から1つづつ取り出して処理している
for FNAME in ${FILE_LIST[@]}
do
   # あらかじめ ls -l で以下のような並びで表示されることを確認
   # それでファイルサイズの場所を確認して5番目の値を取り出している
   # -rw-r--r--  1 user1  staff  53 10 28 17:52 aaa.txt
   SIZE=`ls -l $FNAME | awk '{print $5}'`
   echo "$SIZE $FNAME"
done

例えば、サイズ0のファイルを削除したい場合などは
以下のイメージ

#!/bin/bash
FILE_LIST=(`ls -a *.txt`)
echo ${FILE_LIST[@]}

for FNAME in ${FILE_LIST[@]}
do
  echo ${FNAME}
  echo `ls -l ${FNAME} | awk '{print $5}'`
  SIZE=`ls -l ${FNAME} | awk '{print $5}'`
  if [ ${SIZE} -eq 0 ] ; then
    rm ${FNAME} > /dev/null 2>&1
    if [ $? -eq 0 ] ; then
      echo "削除成功:" ${FNAME}
    else
      echo "削除失敗:" ${FNAME}
    fi
  else 
    echo "削除対象ではありません:" ${FNAME}
  fi
done

この記事が気に入ったらサポートをしてみませんか?