假设我留在currenty目录中,我想列出所有文件的总数,以及大小,权限以及按类型划分的文件数。
这里是示例输出:
以下是一个示例:
打印有关“/ home / user / poker”的信息
档案总数:83
pdf文件:5
html文件:9
文本文件:15
未知:5
注意:任何没有扩展名的文件都可以视为未知。
我希望使用一些简单的命令,比如ls,cut,sort,unique,(只是示例)将每个不同的扩展名放在文件中,并使用wc -l来计算行数
或者我需要使用grep,awk还是其他什么?
希望得到每个人的建议。谢谢你!
答案 0 :(得分:3)
file
仅输出mimetype并将其传递给awk
。file * -ib | awk -F'[;/.]' '{print $(NF-1)}' | sort -n | uniq -c
在我的主目录中,它会产生此输出。
35 directory
3 html
1 jpeg
1 octet-stream
1 pdf
32 plain
5 png
1 spreadsheet
7 symlink
1 text
1 x-c++
3 x-empty
1 xml
2 x-ms-asf
4 x-shellscript
1 x-shockwave-flash
text/x-c++
和text/plain
应该相同,请使用此 file * -ib | awk -F'[;/.]' '{print $1}' | sort -n | uniq -c
6 application
6 image
45 inode
40 text
2 video
根据您的需要更改{print $1}
部分以获得适当的输出。
答案 1 :(得分:0)
您需要bash。
files=(*)
pdfs=(*.pdf)
echo "${#files[@]}"
echo "${#pdfs[@]}"
echo "$((${#files[@]}-${#pdfs[@]}))"
答案 2 :(得分:0)
find . -type f | xargs -n1 basename | fgrep . | sed 's/.*\.//' | sort | uniq -c | sort -n
它为您提供了一个递归的文件扩展名列表。如果只想要当前目录,请在find命令中添加-maxdepth 1
。