2017-04-22 31 views
1

我有很多文件,他們中都有文字text基於普通模式批量重命名文件

test text22 test.mp3

「測試」可以包括各種人物 - >-/()(&%0-9...

現在我想,這樣一個下劃線每一個「文本」前加入像test_test22 test.mp4到每一個文件重命名。有沒有一個簡單的方法來做到這一點?

+0

回聲請看看:?當有人回答我的問題,我應該怎麼辦(http://stackoverflow.com/help/someone-answers) – Cyrus

回答

1

Perl的獨立的重命名命令:

rename -n 's/ (text[0-9]{1,2})/_$1/' *text* 

如果一切正常,刪除選項-n

0

另一種方法來說明在Bash中正則表達式匹配(通常非常有用)的用法。

#!/bin/bash 
for file in * 
do 
    if [[ $file =~ (.*)text(.*) ]] ; then 
    mv "$file" "${BASH_REMATCH[1]}text_${BASH_REMATCH[2]}" 
    fi 
done 

如果你想要做的不僅僅是重命名文件,這將特別有用。

0

我假設你不想在你的例子添加下劃線,但代替前導空格它像(但話又說回來,它有MP3 - > MP4所以只是確保):

$ ls 
test text22 test.mp3 
text22 test.mp3 
$ for f in *text*; do "echo ${f/ text/_text}" ; done 
test_text22 test.mp3 
text22 test.mp3 

mv替換mv "$f" "${f/ text/_text}"