我想重命名目录中使用此模式命名的文件:
string1-number.html
例如:
English-5.html
我想要做的是重命名这样的文件:
string2-number.string3
例如:
Dictionary-5.en
我该怎么做? 我用过这个脚本,但什么都没发生:
echo "English-5.html" | sed 's%\({English}\).\(\.*\)\(html\)%dictionary\2\en%'
答案 0 :(得分:1)
你可以这样做:
mmv *-*.html Dictionary-#2.en
答案 1 :(得分:0)
echo "English-5.html" | sed 's%English\(-[0-9][0-9]*.\)html%dictionary\1en%'
说明:
我正在寻找English
后跟一个破折号,一个或多个数字,以及一个点-[0-9][0-9]*.
(我用旋转的括号括起来,使其成为一个组(组1))。
后跟html
在替换文本中,我使用\1
输出组1的内容以及更改的文本。
答案 2 :(得分:0)
您有两个错误:{...}
不是必需的,您混淆了\.
和.
\.
匹配文字点,而.
匹配单个字符。
echo "English-5.html" |
sed 's%\(English\)\(.*\)\.\(html\)%dictionary\2.en%'
答案 3 :(得分:0)
此答案显示了已发布的sed
命令的一些小优化,并显示了如何实际重命名文件(在当前文件夹中):
for f in *; do mv "$f" $(echo "$f" |\
sed 's/^English-\([0-9]\+\)\.html$/dictionary-\1\.en/'); done