温馨提示×

怎样批量用linux strings

小樊
46
2026-09-20 18:51:23
栏目: 智能运维

在 Linux 下,strings 命令用于从二进制文件或数据中抽取可打印字符串。如果你想要批量处理多个文件,常见做法有几种,下面按使用场景说明。


一、批量处理一个目录下的所有文件

1️⃣ 最简单方式(for 循环)

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

只处理普通文件:

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

二、递归处理子目录(推荐)

2️⃣ 使用 find

find . -type f -exec strings {} \;

如果你只想看文件路径 + 字符串:

find . -type f -exec sh -c 'echo "== $1 =="; strings "$1"' _ {} \;

三、批量输出到文件(常见需求)

3️⃣ 每个文件一个输出

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

四、只提取特定长度以上的字符串

strings -n 8 file

批量:

find . -type f -exec strings -n 8 {} \;

五、结合 grep 批量过滤关键词

例如找包含 password 的字符串:

find . -type f -exec strings {} \; | grep -i password

或更高效:

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

六、处理大文件 / 提升性能(xargs)

find . -type f -print0 | xargs -0 -P 4 strings
  • -P 4:4 个并行进程

七、示例:分析一批二进制程序

for bin in /usr/bin/*; do
    echo "=== $bin ==="
    strings -n 6 "$bin" | grep -i error
done

小结

需求 推荐命令
当前目录 for f in *; do strings "$f"; done
递归目录 find . -type f -exec strings {} \;
输出到文件 strings file > out.txt
并行处理 xargs -P
过滤内容 `strings

如果你能说明:

  • 二进制 / 日志 / 内存 dump
  • 是否要 输出到文件
  • 是否 跨目录

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

0