我有一个包含很多子目录的目录,其中包含#infront:
#adhasdk
#ad18237
我想将它们全部重命名并删除#caracter 我试着这样做:
rename -n `s/#//g` *
但似乎没有用。
-bash: s/#//g: No such file or directory
对此有任何想法。 感谢
答案 0 :(得分:7)
只需使用
$ rename 's/^#//' *
使用-n只是为了检查你认为它会发生什么。 在您的示例中,您可以了解错误消息中使用的错误引号(反引号)
-bash: s/#//g: No such file or directory
bash正在尝试执行名为s/#//g
的命令。
不使用g
(全局)而不是锚定正则表达式,您将替换任何#
,而不仅仅是第一个位置的那个。
答案 1 :(得分:3)
我不知道你在这里输入它是否只是一个拼写错误,但是“rename”命令应该起作用:
“-n”告诉它不要做任何事情。背引号是错误的(它们意味着什么但不是你想要的东西)。
答案 2 :(得分:2)
问题是你使用反引号(`)。你应该使用正常的引号:
rename -n 's/#//g' *
答案 3 :(得分:1)
for DIR in \#*/
do
echo mv "$DIR" "${DIR/#\#/}"
done
答案 4 :(得分:0)
我不得不重命名给定文件夹中的所有文件夹。每个文件夹名称在圆括号内都有一些文本。以下命令从所有文件夹名称中删除了圆括号:
重命名's /(.+)//'*