# Linux怎么批量修改文件名
在Linux系統中,批量修改文件名是系統管理員和開發者的常見需求。本文將詳細介紹5種實用方法,涵蓋基礎命令到高級腳本技巧,幫助您高效完成文件重命名任務。
## 一、使用`rename`命令
`rename`是Linux下最直接的批量重命名工具,支持正則表達式匹配。
### 1. 安裝rename工具
```bash
# Debian/Ubuntu
sudo apt install rename
# RHEL/CentOS
sudo yum install prename
# 將所有的.txt文件擴展名改為.md
rename 's/\.txt$/.md/' *.txt
# 在文件名前添加前綴
rename 's/^/prefix_/' *
# 刪除文件名中的特定字符串
rename 's/remove_//' *remove_*
# 將IMG_20200101.jpg改為2020-01-01.jpg
rename 's/IMG_(\d{4})(\d{2})(\d{2})/$1-$2-$3/' IMG_*.jpg
# 大小寫轉換
rename 'y/A-Z/a-z/' *
mmv
命令mmv
(mass move)是專門為批量操作設計的工具。
sudo apt install mmv # Debian/Ubuntu
# 將file1.txt,file2.txt改為backup1.txt,backup2.txt
mmv "file*.txt" "backup#1.txt"
# 批量修改擴展名
mmv "*.htm" "#1.html"
當系統沒有安裝專用工具時,可以使用原生Bash實現。
# 為所有.jpg文件添加日期前綴
for file in *.jpg; do
mv "$file" "$(date +%Y%m%d)_$file"
done
# 將"報告-2023.docx"改為"2023年度報告.docx"
for file in 報告-*.docx; do
year=$(echo "$file" | grep -oE '[0-9]{4}')
mv "$file" "${year}年度報告.docx"
done
# 先打印將要執行的操作(dry run)
for file in *; do
echo "mv \"$file\" \"new_$file\""
done
# 確認無誤后再實際執行
for file in *; do
mv "$file" "new_$file"
done
適用于遞歸處理子目錄中的文件。
# 將所有子目錄中的.tmp文件改為.bak
find . -name "*.tmp" -print0 | xargs -0 rename 's/\.tmp$/.bak/'
# 只修改30天前創建的文件
find . -name "*.log" -mtime +30 -exec rename 's/\.log$/.old/' {} +
對于極其復雜的重命名需求,可以使用Python腳本。
#!/usr/bin/env python3
import os
import re
for filename in os.listdir('.'):
if filename.endswith('.jpg'):
new_name = re.sub(r'(\d+)', r'pic_\1', filename)
os.rename(filename, new_name)
#!/usr/bin/env python3
import os
import sys
from pathlib import Path
def batch_rename(directory, pattern, replacement):
try:
for item in Path(directory).glob('*'):
if item.is_file():
new_name = item.name.replace(pattern, replacement)
item.rename(Path(directory, new_name))
except Exception as e:
print(f"Error: {e}", file=sys.stderr)
if __name__ == "__main__":
batch_rename('.', 'old_', 'new_')
始終備份數據:在執行批量操作前建議:
tar -czvf backup.tar.gz /path/to/files
使用-n參數預覽:rename命令的測試模式:
rename -n 's/old/new/' *
避免特殊字符:處理包含空格或特殊符號的文件名時,始終使用引號:
mv "$file" "${file// /_}"
方法 | 優點 | 缺點 |
---|---|---|
rename | 語法簡潔,支持正則 | 需要額外安裝 |
mmv | 模式匹配直觀 | 功能較簡單 |
bash循環 | 無需額外工具 | 處理復雜規則較麻煩 |
find+xargs | 支持遞歸操作 | 語法復雜 |
Python腳本 | 最靈活,功能最強大 | 需要編程知識 |
掌握這些批量重命名技術后,您可以: - 快速整理照片庫(按日期重命名) - 規范項目代碼文件(統一命名風格) - 自動化處理下載文件(添加分類前綴) - 批量處理服務器日志文件(按時間歸檔)
建議根據實際需求選擇最適合的方法,簡單任務用rename/bash,復雜需求用Python腳本。記得先在測試目錄驗證命令效果,再應用到重要文件上。 “`
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。