簡體   English   中英

遞歸計算特定文件BASH

[英]Recursively count specific files BASH

我的目標是編寫一個腳本來遞歸搜索當前工作目錄和子目錄並打印出普通文件的數量,目錄的數量,塊特殊文件的數量,字符特殊文件的數量,count FIFO 數和符號鏈接數。 我必須使用帶有 [[ ]] 的條件測試。 問題是我不太確定如何開始。

我嘗試了類似以下的方法來搜索所有普通文件,但我不確定遞歸在 BASH 腳本中究竟是如何工作的:

function searchFiles(){
    if [[ -f /* ]]; then
        return 1
    fi
}
searchFiles
echo "Number of ordinary files $?"

但我得到 0 結果。 有人幫忙嗎?

為什么不使用find

$ # Files
$ find . -type f | wc -l
327
$ # Directories
$ find . -type d | wc -l
64
$ # Block special
$ find . -type b | wc -l
0
$ # Character special
$ find . -type c | wc -l
0
$ # named pipe
$ find . -type p | wc -l
0
$ # symlink
$ find . -type l | wc -l
0

讓你開始的東西:

#!/bin/bash

directory=0
file=0
total=0

for a in *
do
   if test -d $a; then
      directory=$(($directory+1))
   else
      file=$(($file+1))
   fi

   total=$(($total+1))
   echo $a

done

echo Total directories: $directory
echo Total files: $file
echo Total: $total

不過這里沒有遞歸,因為你可以使用ls -lR或類似的方法; 但話又說回來,如果您要使用外部程序,則應該使用find ,這就是它的設計目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM