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



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

+---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[^:]*$"选择具有mime类型字符串的文件,该字符串包含executable

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

最新更新