输出给定目录的文件名/行/类型

时间:2013-07-19 15:54:54

标签: linux bash unix

我正在尝试自学Linux中的基本文件操作和脚本,但我已经碰壁了。现在我正在尝试输出一个类似

的表格
FILENAME     LINES     TYPE
File1        22        File
File2        56        File
Folder1      N/A       Directory

给定任何要搜索的目录。我一直在研究如何使用awk格式化输出,并使用grep和wc来尝试获取我的数据,但我有点迷失。据我所知,我完全是在咆哮错误的树。

1 个答案:

答案 0 :(得分:0)

查看printf格式化输出,然后查看命令file以查找文件类型,wc打印出行数等等。

所有这一切都可以通过find | while read循环完成:

printf "%-20.20s   %-3.3s   %s\n", "File", "Lines", "Type"
find . -type f -print0 | while read -d $'\0' file
do
file_name=$(basename $file)
    lines="$(cat $file | wc -l | sed 's/^  *//')"
    desc="$(file --brief "$file")"
printf "%-20.20s   %3.3s   %s\n", "$file_name", $lines, "$desc"
done

$(...)语法将附带命令的输出作为可分配给变量的字符串返回。我使用cat $file | wc -l来删除文件的名称,然后使用sed删除前导空格。