[英]Rename several file with similar name by command line using regex
我有3個文件,分別為:test_1,test_2和test_3。 我如何僅使用1條mv
命令將它們重命名為TEST_1,TEST_2和TEST_3? 謝謝!
如果您有可用的rename
腳本,請使用:
rename 'y/[a-z]/[A-Z]/' test_*
給定這些文件:
$ ls
Test_1 tesT_3 test 4 test_2
(請注意test 4
帶有空格)您可以使用splat循環,如下所示:
$ for f in *; do mv -v "${f}" "$(echo ${f} | tr '[:lower:]' '[:upper:]')"; done
Test_1 -> TEST_1
tesT_3 -> TEST_3
test 4 -> TEST 4
test_2 -> TEST_2
$ ls
TEST 4 TEST_1 TEST_2 TEST_3
它依賴於使用tr將小寫轉換為大寫,這對LOCALE敏感。
如果您想要更完整的控制,請使用perl或sed來將正則表達式模式替換為文件名:
$ ls
test_1 test_2 test_3
$ for f in *; do mv -v "${f}" "$(echo ${f} | perl -pe 's/([a-z])?(.*)/\U\1\E\2/')"; done
test_1 -> Test_1
test_2 -> Test_2
test_3 -> Test_3
$ ls
Test_1 Test_2 Test_3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.