2011-05-16 46 views
2

该命令将计算子目录中文件的数量。这可以打印在同一行吗?

find . -maxdepth 1 -type d |while read dir;do echo "$dir";find "$dir" -type f|wc -l;done 

它看起来像

./lib64 
327 
./bin 
118 

是否可以把它看起来像

327 ./lib64 
118 ./bin 

呢?

回答

4

有许多方法可以做到这一点.. 。这是一些不会改变你的代码的东西。 (我把它放在多行以提高可读性。)

find . -maxdepth 1 -type d | while read dir; do 
    echo `find "$dir" -type f | wc -l` "$dir" 
done 
1

pipe into tr删除或替换换行符。我希望你想换行到变成一个制表符,就像这样:

find . -maxdepth 1 -type d |while read dir;do 
    find "$dir" -type f|wc -l | tr '\n' '\t'; 
    echo "$dir"; 
done 

(编辑:我周围的错误的方式)

0

do echo -n "$dir "

-n防止echo从后结束行。

+0

这将是我的答案@本,但问题是微妙的不同。目标是在一行上打印数字,然后打印目录名称。想想看,我刚刚在我的答案中发现了另一个错误! – 2011-05-16 01:08:31