2016-04-29 111 views
1

說我有這樣的目錄結構:看看子文件夾中存在的二進制文件

+---A 
| +---A 
| \---B 
+---B 
| \---A 
|  \---A 
+---C 
| 
| 
[...] 

我怎麼能(1)抓取的所有文件夾和子文件夾和(2)檢查,如果這些文件夾中的所有文件都是二進制文件?

+0

你對「二進制文件」的定義是什麼? –

+0

假設二進制表示「包含不被解釋爲字符的字節」。在這種情況下,我對查找字節碼文件(例如'.class')感興趣,但不感興趣的文件(例如'.java')。在技​​術上, –

+1

,所有的文件都是二進制的......如果你的意思是非文本,那麼'find。 -type f -exec some_app_to_test_for_binaryness {} \;'將是一種方法。 –

回答

1

find通常用於搜索目錄樹。

file -i可用於打印文件MIME類型信息。

這給一試:

find . -type f -exec file -i {} + | grep ":[^:]*executable[^:]*$" | sed 's/^\(.*\):[^:]*$/\1/' 

-type f是一個過濾器,選擇正規的文件:沒有符號鏈接,而不是目錄等

exec file -i {} +在目錄樹中的每個常規文件執行file -i

file -i是印刷mime類型字符串:

file -i /bin/bash 
/bin/bash: application/x-executable; charset=binary 

grep ":[^:]*executable[^:]*$"選擇與含有executable

sed 's/^\(.*\):[^:]*$/\1/'清理以僅打印文件名行了MIME類型字符串的文件,而無需額外的mime類型信息。

相關問題