可以的,在 Debian 系统里“批量处理 strings”(通常指用 strings 命令从二进制/文件中提取可打印字符串)是很常见的需求。下面按不同场景给你几种实用做法。
find /path/to/dir -type f -exec strings {} \; > all_strings.txt
如果想带上文件名:
find /path/to/dir -type f -exec sh -c 'echo "===== $1 ====="; strings "$1"' _ {} \; > all_strings.txt
避免对文本文件浪费时间:
find /path/to/dir -type f \
-exec sh -c 'file "$1" | grep -q "ELF"' _ {} \; \
-exec strings {} \; > bin_strings.txt
Debian 的 .deb 本质是 ar 包,里面是 control.tar.* 和 data.tar.*。
mkdir pkg && cd pkg
dpkg-deb -x package.deb .
find . -type f -exec strings {} \; > deb_strings.txt
dpkg-deb -c package.deb
再用 ar + tar 手动解某一层。
使用 xargs -P:
find /path/to/dir -type f -print0 | \
xargs -0 -P 8 -I {} sh -c 'strings "{}"' > all_strings.txt
例如只提取含 “error” 的字符串:
find /path/to/dir -type f -exec strings {} \; | grep -i error
#!/bin/bash
OUT=strings_out.txt
> "$OUT"
for f in "$@"; do
echo "===== $f =====" >> "$OUT"
strings "$f" >> "$OUT"
done
使用:
./extract.sh /bin/* /usr/bin/*
如果你能说清楚:
我可以直接给你现成脚本。