温馨提示×

怎样批量处理linux 文件

小樊
74
2026-08-13 21:05:15
栏目: 智能运维

在 Linux 中,“批量处理文件”通常指对大量文件执行相同的操作(重命名、移动、修改内容、转换格式等)。下面按常见场景给你一套实用方法,从简单到进阶,基本够用 90% 的情况。


一、最常用:用 for 循环批量处理(通用、安全)

1️⃣ 批量重命名文件

for f in *.txt; do
    mv "$f" "${f%.txt}.bak"
done

✅ 把 *.txt 改为 *.bak


2️⃣ 批量处理文件内容

for f in *.log; do
    sed -i 's/ERROR/CRITICAL/g' "$f"
done

✅ 把所有 .log 文件中的 ERROR 替换为 CRITICAL


3️⃣ 批量执行命令

for f in *.jpg; do
    convert "$f" -resize 800x600 "small_$f"
done

✅ 批量压缩图片(需 ImageMagick)


二、批量重命名(推荐工具)

✅ rename(Perl 版本,最强大)

rename 's/\.htm$/.html/' *.htm

✅ .htm → .html

rename 'y/A-Z/a-z/' *

✅ 文件名全部转小写

⚠️ 注意:不同发行版 rename 语法不同(Debian / CentOS 有差异)


✅ mmv(适合模式匹配)

mmv "*.JPG" "#1.jpg"

✅ 批量改后缀


三、按条件批量处理文件

1️⃣ 只处理某种文件

find . -name "*.tmp" -type f | while read f; do
    rm "$f"
done

2️⃣ 按时间 / 大小处理

find . -name "*.log" -mtime +30 -exec rm {} \;

✅ 删除 30 天前的日志


3️⃣ 批量修改权限

chmod 644 *.sh

或递归:

find . -name "*.sh" -exec chmod +x {} \;

四、批量处理文件内容(文本)

✅ sed(流编辑)

sed -i 's/foo/bar/g' *.conf

✅ awk(按列处理)

awk '{print $1}' *.txt > output.txt

五、批量解压 / 压缩

解压多个 tar.gz

for f in *.tar.gz; do
    tar -xzf "$f"
done

批量压缩

tar -czf all.tar.gz *.log

六、并行批量处理(加速)

使用 xargs

ls *.jpg | xargs -n1 -P4 convert -resize 50%

✅ 4 个进程并行处理


七、安全建议(非常重要)

✅ 先测试,再执行

for f in *.txt; do
    echo "mv $f ${f}.bak"
done

✅ 用引号防止空格问题

"$f"

✅ 避免在根目录或重要目录乱跑 rm


八、快速选择指南

需求 推荐方式
简单循环 for
复杂重命名 rename
按条件处理 find
文本替换 sed
并行处理 xargs

九、如果你愿意,我可以帮你写具体脚本

你可以直接告诉我:

  • ✅ 文件类型(.txt / .jpg / .log 等)
  • ✅ 想做什么操作(重命名 / 删除 / 替换内容 / 转换格式)
  • ✅ 目录结构(是否递归)

我可以给你一条命令或完整脚本 ✅

0 踩