這可能適合你。假設和解釋見下面的註釋。
$ 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