シェルプログラミング - 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
この記事が気に入ったらサポートをしてみませんか?