Shell-Script

按副檔名計算目錄中的文件

  • June 17, 2021

為了測試的目的,我想計算一個目錄中有多少圖像文件,按文件副檔名(jpg =“yes”分隔每個圖像文件類型。這是因為稍後它將對另一個執行操作的腳本有用在每個文件副檔名上)。我可以僅對 JPEG 文件使用以下內容嗎?

jpg=""
count=`ls -1 *.jpg 2>/dev/null | wc -l`
if [ $count != 0 ]
then
echo jpg files found: $count ; jpg="yes"
fi

考慮到文件副檔名 jpg、png、bmp、raw 等,我應該使用while循環來執行此操作嗎?

我的方法是:

  1. 列出目錄中的所有文件
  2. 提取他們的副檔名
  3. 對結果進行排序
  4. 計算每個擴展的出現次數

有點像這樣(最後一次awk呼叫純粹是為了格式化):

ls -q -U | awk -F . '{print $NF}' | sort | uniq -c | awk '{print $2,$1}'

(假設 GNUls在這裡-U選擇跳過排序作為優化。如果不支持,可以安全地刪除它而不影響功能)。

這遞歸地遍歷文件併計算匹配的副檔名:

$ find . -type f | sed -e 's/.*\.//' | sort | uniq -c | sort -n | grep -Ei '(tiff|bmp|jpeg|jpg|png|gif)$'
  6 tiff
  7 bmp
 26 jpeg
 38 gif
 51 jpg
 54 png

引用自:https://unix.stackexchange.com/questions/146760