1
說我有這樣的目錄結構:看看子文件夾中存在的二進制文件
+---A
| +---A
| \---B
+---B
| \---A
| \---A
+---C
|
|
[...]
我怎麼能(1)抓取的所有文件夾和子文件夾和(2)檢查,如果這些文件夾中的所有文件都是二進制文件?
說我有這樣的目錄結構:看看子文件夾中存在的二進制文件
+---A
| +---A
| \---B
+---B
| \---A
| \---A
+---C
|
|
[...]
我怎麼能(1)抓取的所有文件夾和子文件夾和(2)檢查,如果這些文件夾中的所有文件都是二進制文件?
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類型信息。
你對「二進制文件」的定義是什麼? –
假設二進制表示「包含不被解釋爲字符的字節」。在這種情況下,我對查找字節碼文件(例如'.class')感興趣,但不感興趣的文件(例如'.java')。在技術上, –
,所有的文件都是二進制的......如果你的意思是非文本,那麼'find。 -type f -exec some_app_to_test_for_binaryness {} \;'將是一種方法。 –