重命名一个变量在中心的文件夹
我想重命名我的文件夹。重命名一个变量在中心的文件夹
当前文件夹名称= apple。我想将它重命名为apsomeple。
新名称中心的“some”将是一个变量。
我试过以下,但它不起作用。请指教。如果我将它添加到测试结束,它就可以工作。
name="some"
mv apple ap$nameple # doesn't work
mv apple apple$name # works - just testing
您可以使用{}
界定的变量名:
mv apple ap${name}ple
如果您的变量将包含空格字符的机会,不像提供的例子,那么除了你将需要把双引号输入新文件名:
mv apple "ap${name}ple"
mv apple "ap${name}ple"
应该工作
为什么需要在目标
双引号考虑
name="some stuff"
随着
mv apple ap${name}ple
字分裂与${name}
发生并且您将不会得到相关结果。 所以mv
可能会给你:
mv: target ‘stuffple’ is not a directory
随着
mv apple "ap${name}ple"
ap${name}ple
被认为是一个单一的实体。
双引号是没有必要的。 –
@PaulL:请参阅编辑。 – sjsam
引用你的变量!
mv apple ap"$name"ple
或者,你可以使用大括号(仍然在引号):
mv apple "ap${name}ple"
可能有人会说,引号不是在这种情况下绝对必要的,但我个人认为的好处(一更强大的脚本)超过了成本(只有两个额外的字符)。
大括号不需要双引号 –
是的,以防止分词和全局扩展。 –
刚刚经过'name =“ap *”'和'name =“so me”'的测试,生成的文件是'apap * ple'和'apso meple',无论引号如何。我使用的不是bash,但我相信它们在这方面是兼容的。编辑:我错了!双引号需要在bash中,但不是zsh。 – 0x5453
mv /path/tofolder/oldfilename /path/tofolder/newname
如: 如果文件夹是在位于桌面
mv /home/Desktop/apple /home/Desktop/apsomeple
你看过这个问题吗? –
缺少'ap $ {name} ple'周围的双引号 – sjsam
@sjsam不需要双引号。 –
呃..你确定?考虑'name =“一些东西”'并且为自己测试。在这种情况下,他们需要防止分词。 – sjsam