使用regex通过命令行重命名几个具有类似名称的文件
我有3个文件名为:test_1、test_2和test_3。如何仅使用1使用regex通过命令行重命名几个具有类似名称的文件,regex,rename,mv,Regex,Rename,Mv,我有3个文件名为:test_1、test_2和test_3。如何仅使用1mv命令将它们重命名为:TEST_1、TEST_2和TEST_3?谢谢 如果您有可用的重命名脚本,请使用: rename 'y/[a-z]/[A-Z]/' test_* 鉴于这些文件: $ ls Test_1 tesT_3 test 4 test_2 (注意test4带有空格)您可以使用如下splat循环: $ for f in *; do mv -v "${f}" "$(echo ${f} | tr '[:lo
mv
命令将它们重命名为:TEST_1、TEST_2和TEST_3?谢谢 如果您有可用的重命名脚本,请使用:
rename 'y/[a-z]/[A-Z]/' test_*
鉴于这些文件:
$ ls
Test_1 tesT_3 test 4 test_2
(注意test4
带有空格)您可以使用如下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
它依赖于使用将小写转换为大写,这是对区域设置敏感的
如果您想要更完整的控制,请使用perl或sed将regex模式替换为文件名:
$ 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
您可以尝试使用rename命令,该命令允许您使用Perl正则表达式。如果我要重命名为Test_1、Test_2,您可以使用krename或total commander来执行此操作。。。我该怎么办?谢谢