Linux框,计算目录中每个子文件夹的文件

时间:2015-03-15 22:43:49

标签: linux bash cygwin

我已经有了Linux系列的这一行。

find . -type f -name '*.txt' -exec ls -l {} \;

它正在获取目录中的所有TXT文件。但我不能做的和我想要做的是,读取一个目录中子文件夹上的所有.txt文件。

例如:ParentTxtFolder - > ChildTxtFolder - > Txtfolder1,Txtfolder2,Txtfolder3。每个Txtfolder它包含.txt文件。

所以我想要的是,扫描Txtfolder1并计算.txt文件。

如果可以输出,则预期输出:

Txtfolder1 - 14
Txtfolder2 - 10
Txtfolder3 - 18

我真的坚持这个。提前谢谢!

2 个答案:

答案 0 :(得分:0)

$ find . -type f -name '*.txt' | awk '$NF=""; {a[$0]++} END{for( i in a) print i, a[i]}' FS=/
.  2
. foo  1
. foo bar  2

在这个例子中,有2个文件,1个用于foo,2个用于foo / bar。此输出不是完全您想要的,但不清楚差异是否相关。

答案 1 :(得分:0)

你能做到的一种方法是:

for d in `find . -type d` ; do echo -n "$d: " ; find "$d" -type f -depth 1 -name \*.txt | wc -l ; done

或不那么简洁:

for d in `find . -type d`   # for each directory
  do
    echo -n "$d: "          # print directory name
    find "$d" -type f -depth 1 -name \*.txt | wc -l
  done                      # followed by count of .txt files in directory