我正在尝试使用 bash 中的 du,file 和 awk 打印所有文件和子目录的名称,类型和大小。到目前为止我的代码是:
du -bsh * | awk '{print $2, $1}' ; file * | awk '{print $2}'
它们分开运行,因此它们分开打印。如何将其作为一个命令?
预期产量:
File1 ASCII text 10K
Mov.mp4 ISO Media 15M
Pictures directory 4,0K
bder.c C source 4,6K
2 回答
试试这个 :
Awk 首先读取
file *
的输出。它运行NR==FNR{infos[$1]=$2}
并将信息存储在关联数组infos
中。然后 awk 读取
du -bsh *
的输出并执行该块NR!=FNR{print $2, infos[$2 ":"], $1}'
。阅读这个以了解有关流程替换的更多信息。
您可能对以下解决方案感兴趣:
或者如果你喜欢你的输出更清洁:
它给你以下输出: