温馨提示×

怎样批量用linux strings提取

小樊
38
2026-09-02 10:50:58
栏目: 智能运维

在 Linux 下,批量用 strings 提取文件中可打印字符串,常见有几种做法,取决于你的使用场景(目录、递归、输出方式等)。


一、对当前目录下所有文件批量提取

for f in *; do
    echo "==== $f ===="
    strings "$f"
done

如果你只想处理普通文件:

for f in *; do
    [ -f "$f" ] && strings "$f"
done

二、递归整个目录(推荐)

方法 1:find + xargs(高效)

find . -type f -print0 | xargs -0 strings

方法 2:find + while(更可控)

find . -type f | while read -r f; do
    echo "==== $f ===="
    strings "$f"
done

三、指定文件类型(如 ELF、二进制)

只处理 ELF 文件:

find . -type f -exec file {} \; | grep ELF | cut -d: -f1 | xargs strings

四、输出到单独文件(每个文件一个结果)

mkdir strings_out
for f in *; do
    [ -f "$f" ] && strings "$f" > "strings_out/$f.txt"
done

递归版本:

find . -type f | while read -r f; do
    out="strings_out/${f//\//_}.txt"
    strings "$f" > "$out"
done

五、常用 strings 参数

strings -n 6 file        # 最少 6 个字符
strings -e l file        # 16-bit little endian
strings -t x file        # 显示偏移(十六进制)

六、示例:提取并搜索关键字

find . -type f -print0 | xargs -0 strings | grep -i password

如果你能说明:

  • 固件 / ELF / 日志 / 任意文件
  • 是否要 保留文件名 / 偏移 / 输出格式

我可以给你更精确的命令。

0