如何计算subir中的文件和bash中的过滤输出

时间:2017-11-03 15:41:39

标签: bash

嗨希望有人可以提供帮助,我在磁盘上有一些目录,我想计算其中的文件数量(如果可能的话还有dir大小),然后从输出中删除信息。到目前为止我有这个

find . -type d -name "*,d" -print0 | xargs -0 -I {} sh -c 'echo -e $(find "{}" | wc -l) "{}"' | sort -n

这让我得到了所有与我的模式以及文件数量匹配的目录 - 太棒了!

这给了我类似的东西

2 ./bob/sourceimages/psd/dzv_body.psd,d
2 ./bob/sourceimages/psd/dzv_body_nrm.psd,d
2 ./bob/sourceimages/psd/dzv_body_prm.psd,d
2 ./bob/sourceimages/psd/dzv_eyeball.psd,d
2 ./bob/sourceimages/psd/t_zbody.psd,d
2 ./bob/sourceimages/psd/t_gear.psd,d
2 ./bob/sourceimages/psd/t_pupil.psd,d
2 ./bob/sourceimages/z_vehicles_diff.tga,d
2 ./bob/sourceimages/zvehiclesa_diff.tga,d
5 ./bob/sourceimages/zvehicleswheel_diff.jpg,d

由此我想基于最大文件数进行过滤,所以>例如,我想将filetype捕获为每个剩余结果的变量,例如./bob/sourceimages/zvehicleswheel_diff。 jpg ,d

我想我可以使用awk吗? 然后最后我想从磁盘中删除所有结果,发现我通常只做像-exec rm -rf {} \;但是我不清楚它在这里是如何运作的

非常感谢

EDITED

虽然这显然不是答案,但这些命令以我想要的形式向我提供了我想要的信息。我只需要一种方法将所有内容放在一起,而不是多次搜索这样的垃圾

filetype=$(find . -type d -name "*,d" -print0 | awk 'BEGIN { FS = "." }; { 
print $3 }' | cut -d',' -f1)
filesize=$(find . -type d -name "*,d" -print0 | xargs -0 -I {} sh -c 'du -h 
{};' | awk '{ print $1 }')
filenumbers=$(find . -type d -name "*,d" -print0 | xargs -0 -I {} sh -c 
'echo -e $(find "{}" | wc -l);')

1 个答案:

答案 0 :(得分:0)

files_count=`ls -keys | nl`

例如:

ls | nl

nl打印的行数