【shell程式設計】目錄檔案計數

Bonnie i發表於2020-10-11

目錄檔案計數

我們要實現一個指令碼,它會對PATH環境變數中定義的目錄裡的可執行檔案進行計數。

首先,檢視一下PATH環境變數

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

PATH中的每個路徑由冒號分隔。要獲取可在指令碼中使用的目錄列表,就必須用空格來替換冒號。現在你會發現sed編輯器用一條簡單表示式就能完成替換工作。

$ echo $PATH | sed 's/:/ /g'
/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /root/bin

分離出目錄之後,你就可以使用標準for語句來遍歷每個目錄。

mypath=$(echo $PATH | sed 's/:/ /g') 
for directory in $mypath 
do 
... 
done

一旦獲得了單個目錄,就可以用ls命令來列出每個目錄中的檔案,並用另一個for語句來遍歷每個檔案,為檔案計數器增值。

這個指令碼的最終版本如下。

$ cat countFiles
#!/bin/bash
#count numbers of files in your PATH
mypath=$(echo $PATH | sed 's/:/ /g')
count=0
for directory in $mypath
do
	check=$(ls $directory)
	for item in $check
	do
		count=$[$count+1]
	done
	echo "$directory - $count"
	count=0
done


$ ./countFiles
/usr/local/sbin - 0
/usr/local/bin - 3
/usr/sbin - 480
/usr/bin - 948
ls: cannot access /root/bin: No such file or directory
/root/bin - 0

相關文章