2010-01-28 133 views
1

我有一堆名爲'something_12345.doc'(任何5位數字,不一定是12345)的文件。我需要將它們全部重命名爲「something.doc」。這是一個Unix文件系統,我懷疑只有一個命令就可以做到這一點...任何Unix正則表達式guru都可以幫忙嗎?如何快速重命名文件夾中的一堆文件

謝謝!

+3

你將剩下一個文件,基本上,你正在刪除N-1文件並將第N個文件複製到'something.doc' - 這是你想要的嗎? – dirkgently 2010-01-28 18:29:04

+0

-1因爲經常問*。你應該首先在SO上進行搜索。 – bortzmeyer 2010-01-30 21:30:50

回答

0

是的,rename採用Perl風格的正則表達式。做一個man rename

+0

並非總是如此。在RH系統上,它做了一個簡單的字符串替換。 – 2010-01-30 22:38:49

2

rename 's/_[0-9][0-9][0-9][0-9][0-9]//' *.doc

+0

我在FreeBSD上,因此這並不會工作。 慶典:在/ usr/local/bin中/重命名:參數列表太長 我無法弄清楚如何設置變量命名 – user261231 2010-01-28 21:34:44

+0

想通了。 for i in [A-Za-z] * _ [0-9] [0-9] [0-9] [0-9] [0-9] .doc; do mv「$ i」「$ {i/_ [0-9] [0-9] [0-9] [0-9] [0-9]}」;完成 – user261231 2010-01-28 22:14:04

3

@OP,外殼已經出現在你的MV聲明擴展你的模式爲你,你不必再指定5位數字的模式。

for file in *_[0-9][0-9][0-9][0-9][0-9].doc 
do 
    echo mv "$file" "${file%_*}.doc" 
done 
+0

感謝ghostdog74和其他人! – user261231 2010-01-29 06:25:00

1

用sed

ls *.doc | sed 's:\([^0-9_]\)[0-9_][0-9_]*\.doc:$(mv & \1.doc)' | /bin/bash 
0

在FreeBSD上,你可能有興趣在sysutils的/ renameutils端口。命令qmv打開$ EDITOR並允許您在合理舒適的環境中指定所有文件重命名。我個人更喜歡qmv -fdo(單列)格式。