这是我的文件名的样子:
1.两个Sum.cpp2. xxx xxx.cpp我想更改这样的文件名:
P1-双Sum.cppP2-XXX-xxx.cpp删除点“。”数字背后
用。。。来代替 ”-”,
…
运用 bash 参数替换 :
bash
for f in *.cpp ; do d="${f/.}" ; mv "$f" "P${d// /-}" ; done
我会推荐 rename 命令,a.k.a。 的 Perl重命名 强> 。然后你可以这样做:
rename
rename --dry-run 's|^(\d+)[. ]+(.*)|P$1 $2|; s| |-|g' *cpp
的 样本输出 强>
'1. Two Sum.cpp' would be renamed to 'P1-Two-Sum.cpp' '21. Merge Two Sorted Lists.cpp' would be renamed to 'P21-Merge-Two-Sorted-Lists.cpp' '4. Median of Two Sorted Arrays.cpp' would be renamed to 'P4-Median-of-Two-Sorted-Arrays.cpp'
如果看起来正确,请进行备份,删除 --dry-run 并再次运行它。
--dry-run
命令说...... “重命名以...结尾的所有文件 .cpp 如下。捕获任意数量的数字( \d+ )在行的开头( ^ )作为捕获组1.允许,并忽略任意数量的空格或点( [. ]+ )。捕获该行的其余部分作为捕获组2.用a替换文件名 P 然后是捕获组1,然后是一个空间,然后是捕获组2.最后,全局替换一个带有破折号的空间的所有实例。“ 。
.cpp
\d+
^
[. ]+
P
如果您不习惯Perl,那里有两个替换语句,因此从20,000英尺开始,它说:
substitute|something|something else| ; substitute|something|something else|