温馨提示×

怎样批量处理ubuntu strings

小樊
39
2026-09-21 17:06:58
栏目: 智能运维

在 Ubuntu 下,“strings”通常指的是:

  1. strings 命令(从二进制/文件中提取可打印字符串)
  2. 程序中的字符串(国际化/i18n,如 .po / .pot 文件)
  3. 批量提取或替换多个文件中的字符串

下面按常见场景给你几种批量处理方法。


一、批量对多个文件执行 strings 命令

1. 对目录下所有文件

for f in /path/to/files/*; do
    strings "$f" > "$f.txt"
done

2. 递归处理子目录

find /path/to/dir -type f -exec strings {} \; > all_strings.txt

3. 只处理特定类型(如 .so / 二进制)

find . -type f -name "*.so" -exec strings {} \; > so_strings.txt

二、批量提取并去重

find . -type f -exec strings {} \; | sort | uniq > strings_uniq.txt

三、批量搜索包含某字符串的文件(不是 strings 命令)

如果你是想批量查找字符串内容:

grep -rl "keyword" /path/to/dir

或递归并显示行号:

grep -rn "keyword" /path/to/dir

四、批量处理 i18n 字符串(.po / .pot)

如果你是做软件翻译:

1. 批量提取字符串(xgettext)

find . -name "*.c" -o -name "*.cpp" | xargs xgettext -o messages.pot

2. 批量合并翻译

for po in *.po; do
    msgmerge --update "$po" messages.pot
done

3. 批量编译 .po → .mo

for po in *.po; do
    msgfmt "$po" -o "${po%.po}.mo"
done

五、批量替换字符串(sed)

find . -type f -exec sed -i 's/old_string/new_string/g' {} +

⚠️ 修改前建议先备份:

cp -r project project.bak

六、并行加速(大文件/多文件)

find . -type f | parallel strings {} \> {}.strings.txt

(需安装 parallel)


如果你能具体说明:

  • 是 二进制 strings 还是 代码/文本字符串
  • 想 提取 / 搜索 / 替换 / 翻译

我可以直接给你一条最合适的命令。

0 踩