簡體   English   中英

使用正則表達式通過命令行重命名具有相似名稱的多個文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM