如何仅在文件夹中打印.TXT
或.csv
文件及其可读大小
示例:
file type | total count | total size
.TXT 30 40MB
到目前为止我所做的:
$ find . -type f -name "*.TXT|csv" | wc -l
答案 0 :(得分:0)
不确定如何在单个命令中执行累积大小+文件计数,但是您可以使用以下命令,将它们分配给变量,然后以所需的表格格式打印出结果。
具有多个扩展名的累积文件大小:
find . -type f -regex '.*\.\(txt\|csv\)' -exec du -ch {} + | grep total$ | cut -f1
单个扩展名的累积文件大小:
find . -type f -name '*.txt' -exec du -ch {} + | grep total$ | cut -f1
具有多个扩展名的文件数:
find -regex '.*\.\(txt\|csv\)' | wc -l
单个扩展名的文件计数:
find . -type f -name "*.txt" | wc -l
答案 1 :(得分:0)
这很粗糙:
找到所有带有扩展名的文件,打印每个文件的字节数和名称:
find . -type f -regex '.*\.\(txt\|csv\)' -exec du -b {} \; |
仅保留字节数和扩展名:
sed -E 's/([0-9]+)\s+.*(\..*)/\1 \2/g' |
使用AWK计算每个扩展的总数和大小(也可以在外壳程序中调用numfmt
命令以使其易于理解)并格式化表格:
awk 'BEGIN{print "file type\ttotal count\ttotal size"} {totalSize[$2] += $1; count[$2]++} END {for (ext in count){ "numfmt --to=iec "totalSize[ext] | getline readableSize ;print ext"\t\t"count[ext]"\t\t"readableSize}}'
完整命令:
find . -type f -regex '.*\.\(txt\|csv\)' -exec du -b {} \; |
sed -E 's/([0-9]+)\s+.*(\..*)/\1 \2/g' |
awk 'BEGIN{print "file type\ttotal count\ttotal size"} {totalSize[$2] += $1; count[$2]++} END {for (ext in count){ "numfmt --to=iec "totalSize[ext] | getline readableSize ;print ext"\t\t"count[ext]"\t\t"readableSize}}'
输出看起来像这样,如果您搞怪awk打印很容易标准化:
file type total count total size
gradle 109 89K
txt 2283 680M
话虽这么说,但看到它我感到很脏。这远远超出了Python更易读的地步。