2017-04-22 30 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}"