※ 引述《pigLU.bbs@ptt.cc (^^)》之銘言:
> 大家好
> 例如我想找一個目錄下的 .txt 檔的數量
> 目前想到的方法是
> filelist=`ls -t $FILE_FOLDER | grep .txt`
> num=0
> for file in $filelist
> do
> $num=`expr $num+1`
> done
> 請問有更快的方法嗎?謝謝~
你的目的是計算 $FILE_FOLDER 這層目錄下的 .txt 檔數量,還是 $FILE_FOLDER
包含以下所有子目錄裏面的 .txt 呢?如果只要算 $FILE_FOLDER 這一層的話,
那這樣就好了:
ls -l *.txt | wc -l
如果考慮到副檔名的大小寫的問題的話,可以改成:
ls -l | grep -i '.txt' |wc -l
如果要搜尋整個子目錄樹的話:
ls -lr |grep -i '.txt' |wc -l
或
find $FILE_FOLDER -type f -iname '*.txt' | wc -l
用 -iname 表示忽略大小寫的差異,所以 .txt .Txt .tXt .txT .TXt .TxT .tXT
和 .TXT 都會一併計入。
此外,你上面的 script 如果是用 bash 的話,bash 內建簡單的數學運算功能,
所以其實這樣就好:(假設搜尋整個子目錄樹)
#!/bin/bash
FILE_FOLDER=$1
num=0
for file in $(ls -r $FILE_FOLDER | grep -i '.txt'); do
(( num++ ))
done
echo $num
同樣的,ls 那個部分也可以用 find 來做。
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: adsl-070-155-125-254.sip.asm.bellsouth.net