我有一個文件strucuture這樣的:如何使用子目錄的LS命令列出文件?
a
----1
----2
----3
b
----1
----2
----3
我需要用1級爲A,B目錄計數2級的文件,那麼有沒有這樣做的方法嗎?獲取特定級別的文件?
我是一個天真的shell程序員,所有我迄今爲止使用ls | wc-l,但在這種情況下它將返回2
我有一個文件strucuture這樣的:如何使用子目錄的LS命令列出文件?
a
----1
----2
----3
b
----1
----2
----3
我需要用1級爲A,B目錄計數2級的文件,那麼有沒有這樣做的方法嗎?獲取特定級別的文件?
我是一個天真的shell程序員,所有我迄今爲止使用ls | wc-l,但在這種情況下它將返回2
有幾個選項。
計數遞歸的所有文件:在深度2
find a b -type f | wc -l
計數的所有對象:
find . -mindepth 2 -maxdepth 2 | wc -l
find a b -mindepth 1 -maxdepth 1 | wc -l
find . -type f | wc -l
a
下計數文件,並只b
有些人覺得(1)可執行文件支持mindepth和MAXDEPTH選項(他們是可悲的不是POSIX,但如果你使用像Linux或Cygwin的GNU工具):
find . -mindepth 2 -maxdepth 2
其中列出了所有的文件系統對象所有子目錄(除外。和..條目,這可能是你想要的東西)。
又一種方式...
L2FilesDirs=`ls -d */* | wc -l`
L2Dirs=`ls -d */*/ | wc -l`
L2OnlyFiles=$(($L2FilesDirs - $L2Dirs))
假設bash或類似外殼,使用通配符和陣列
$ ls -R
.:
a b
./a:
1 2 3
./b:
4 5 6
$ level2=(*/*)
$ echo "num files at level 2: ${#level2[@]}"
num files at level 2: 6