嗨希望有人可以提供帮助,我在磁盘上有一些目录,我想计算其中的文件数量(如果可能的话还有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);')
答案 0 :(得分:0)
files_count=`ls -keys | nl`
例如:
ls | nl
nl打印的行数