Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用regex通过命令行重命名几个具有类似名称的文件_Regex_Rename_Mv - Fatal编程技术网

使用regex通过命令行重命名几个具有类似名称的文件

使用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

我有3个文件名为:test_1、test_2和test_3。如何仅使用1
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来执行此操作。。。我该怎么办?谢谢