2016-12-13 119 views
1

我有一個文件系統,看起來像這樣的未知文件類型。管找到`文件`(命令)linux命令遞歸

└── 63206 
    └── 4443606 
     ├── 6433 
     ├── 712861 
     ├── 726355 
     └── 723714 

對於每一個文件,我可以做file <filename>並獲得規範有關它的尺寸。

6433: PNG image data, 138 x 209, 8-bit/color RGBA, non-interlaced

誰能告訴我怎麼可能管這個遞歸,所以我可以得到這樣的在bash每個文件路徑的輸出?

我試過類似find | file。我不熟悉管道打擊。

+0

發現。 | xargs文件 這將打印當前目錄中的所有文件(以及文件夾中的文件),並將其傳遞到文件 – hurnhu

+0

僅供參考''gm identify'(來自GraphicsMagic--同時參見來自ImageMagick的'identify'命令)可能是一個更好的工具這比'file';它實際上可以讓你指定一個格式字符串,這樣你就可以以任何格式更容易地解析出你想要的確切的元數據。 –

+1

回覆:「管道」,順便說一句 - 管道將一個程序的標準輸出連接到另一個程序的標準輸入。如果你不能告訴'file'從它的標準輸入中讀取要運行的文件的名字,那麼你不能將這樣的文件列表輸入到'file'中(沒有中間工具例如'xargs' - 並且實際上調用它自己的錯誤/複雜性)。因此,管道並非無條件成爲過程之間各種連接的合適工具。 –

回答

4

你可能要添加其他條件,但基本上都是從頂級目錄

find -type f -exec file {} \; 

find path_to_dir -type f -exec file {} \; 
+1

我會考慮'-exec文件 - {} +';這樣我們不會調用'file'多於必要的次數,並且可以處理文件名(帶路徑)以短劃線開頭的情況。 –

+0

效果很好。謝謝! – 1N5818