Linux 查看子文件夹中是否存在二进制文件
假设我有这样一个目录结构:Linux 查看子文件夹中是否存在二进制文件,linux,unix,command-line,binary,directory,Linux,Unix,Command Line,Binary,Directory,假设我有这样一个目录结构: +---A | +---A | \---B +---B | \---A | \---A +---C | | [...] 如何(1)对所有文件夹和子文件夹进行爬网,以及(2)检查这些文件夹中是否有二进制文件?find通常用于搜索目录树 file-i可用于打印文件mime类型信息 尝试一下: find . -type f -exec file -i {} + | grep ":[^:]*executable[^:]*$" | sed 's/^\
+---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
文件-i
正在打印mime类型字符串:
file -i /bin/bash
/bin/bash: application/x-executable; charset=binary
grep:[^:]*可执行文件[^::]*$”
选择包含可执行文件的mime类型字符串的文件
sed的/^\(.*):[^::::*$/\1/”
清理该行,以便只打印文件名,而不打印额外的mime类型信息。您对“二进制文件”的定义是什么?比如说二进制意味着“包含不打算解释为字符的字节”。在这种情况下,我对查找字节码文件感兴趣(例如,.class
)但不是源文件(例如,.java
)。从技术上讲,所有文件都是二进制的……如果您指的是非文本,那么find.-type f-exec some_app_to_test_for_binaryness{}\;
是一种方法。或者查找/path/to/root-type f-name'*.class'
.class
只是一个例子。我想测试内容,而不是扩展名。