查看子文件夹中是否存在二进制文件

时间:2016-04-29 20:37:53

标签: linux unix command-line binary directory

假设我有这样的目录结构:

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

我如何(1)抓取所有文件夹和子文件夹,以及(2)检查这些文件夹中的文件是否为二进制文件?

1 个答案:

答案 0 :(得分: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[^:]*$"选择包含mime类型字符串的文件,其中包含executable

sed 's/^\(.*\):[^:]*$/\1/'清除该行以便仅打印文件名,而无需额外的mime类型信息。