我有3个名为的文件:test_1,test_2和test_3。我怎样才能使用1 mv
命令将它们重命名为:TEST_1,TEST_2和TEST_3?谢谢!
答案 0 :(得分:0)
如果您有rename
脚本,请使用:
rename 'y/[a-z]/[A-Z]/' test_*
答案 1 :(得分:0)
鉴于这些文件:
$ 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