重命名文件名,另一名
非常简单的解释:重命名文件名,另一名
如何重命名
/folder1/something.test.html
/folder1/somethingElse.test.html
/folder2/againsomething.test.html
/canBeHereAlso.test.html
到
/folder1/something.test2.html
/folder1/somethingElse.test2.html
/folder2/againsomething.test2.html
/canBeHereAlso.test2.html
,也是反函数能够回来原来的点?
这样的事情是很简单的,但不幸的是,完全不可能对谷歌他们,除非你已经知道怎么做了......
我在想:
for NAME in */*.test.html; do mv $NAME $NAME2.html ; done # for A -> B
for NAME in */*.test2.html ; do mv $NAME #remove last caracter.html for B --> A
但不幸的是,这并不是那么简单...
对于简单的字符串后缀,前缀操作,我建议你熟悉shell的标准parameter expansion features${VAR%suffix_to_remove}
和${VAR#prefix_to_remove}
。这些将工作在任何标准sh
,不只是bash
:
测试 - >测试2
for NAME in */*.test.html; do # NAME is, e.g., "dir/foo.test.html"
BASENAME=${NAME%.test.html} # BASENAME is "dir/foo"
mv "$NAME" "$BASENAME.test2.html";
done
测试2 - >测试是相似的:
...
BASENAME=${NAME%.test2.html} # strip off .test2.html
...
您可以使用rename
命令。
rename 's/(.*)\./$12./' *.html
或
rename 's/.*\K\./2./' *.html
谢谢;)以及如何回到原始状态:/? –
'rename's /.* \ K2 \ ././'* .html' –
重命名命令是什么?我没有在所有类UNIX系统上使用它,并且我没有任何支持类似sed的正则表达式的重命名实用程序 – pilcrow
你可以这样做:
name1="/folder1/something.test.html"
name2="${name1/%.html/2.html}"
echo "$name2"
#mv "$name1" "$name2"
输出:
/folder1/something.test2.html
.html
正在与2.html
在字符串的结尾所取代。
要返回即test2 -> test
:
name2="/folder1/something.test2.html"
name1="${name2/%2.html/.html}"
谢谢;)以及如何回到原始状态:/? –
@ValentinMontmirail'name1 =“$ {name2 /%2.html/.html}”'...一旦你明白发生了什么,这里来回应该是'.html'到'2.html'和'2.html'到'.html'的替换。 – Jahid
非常美丽的答案完美的我想要的感谢。 –