回文章列表
作者Storm.bbs@bbs.sayya.org (風) 看板: linux
標題Re: [問題] shell-如何計算檔案數目
時間SayYA 資訊站 (2008/03/13 Thu 13:29:29)
※ 引述《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
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻