这可能适合你。假设和解释见下面的注释。
$ find so -type f -exec du {} \; -exec file -b {} \; | awk -F\t 'NF > 1 { printf "%s:%s:", $1, $2 ; next }1'
8:so/a.txt:ASCII text
8:so/anotherfile.txt:ASCII text
8:so/b1.txt:ASCII text
8:so/b2.txt:ASCII text
8:so/input.txt:ASCII text
8:so/long.txt:ASCII text, with very long lines
8:so/ref.txt:ASCII text
63504:so/somezip.zip:Zip archive data, at least v1.0 to extract
8:so/this.is.a.file.txt:ASCII text
8:so/yet-still-another-file.txt:ASCII text
注
awk -F\t
管的找到AWK,使用标签作为隔膜的结果。在这里,我假设du
命令与我的环境中使用选项卡分隔文件的大小。
NF > 1
如果有一个以上的领域,我们知道这是du
输出(在这里我假设的类型,没有从file
返回包含制表符)。
{ printf "%s:%s:", $1, $2 ; next }
打印du
输出与结肠分离器,和没有换行符。 next
指示它立即跳到下一行输入(file
输出)。简单地打印输入,(这是file
输出),以换行到stdout
1
惯用方式。 (1
是模式,总是如此,默认操作是打印就行了。)
来源
2015-02-11 01:36:04
jas