我有很多文件,他們中都有文字text
。基於普通模式批量重命名文件
像test text22 test.mp3
「測試」可以包括各種人物 - >-/()(&%0-9...
現在我想,這樣一個下劃線每一個「文本」前加入像test_test22 test.mp4
到每一個文件重命名。有沒有一個簡單的方法來做到這一點?
我有很多文件,他們中都有文字text
。基於普通模式批量重命名文件
像test text22 test.mp3
「測試」可以包括各種人物 - >-/()(&%0-9...
現在我想,這樣一個下劃線每一個「文本」前加入像test_test22 test.mp4
到每一個文件重命名。有沒有一個簡單的方法來做到這一點?
Perl的獨立的重命名命令:
rename -n 's/ (text[0-9]{1,2})/_$1/' *text*
如果一切正常,刪除選項-n
。
另一種方法來說明在Bash中正則表達式匹配(通常非常有用)的用法。
#!/bin/bash
for file in *
do
if [[ $file =~ (.*)text(.*) ]] ; then
mv "$file" "${BASH_REMATCH[1]}text_${BASH_REMATCH[2]}"
fi
done
如果你想要做的不僅僅是重命名文件,這將特別有用。
我假設你不想在你的例子添加下劃線,但與代替前導空格它像(但話又說回來,它有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}"
回聲請看看:?當有人回答我的問題,我應該怎麼辦(http://stackoverflow.com/help/someone-answers) – Cyrus