我想重命名我的文件夾。重命名一個變量在中心的文件夾
當前文件夾名稱= apple。我想將它重命名爲apsomeple。
新名稱中心的「some」將是一個變量。
我試過以下,但它不起作用。請指教。如果我將它添加到測試結束,它就可以工作。
name="some"
mv apple ap$nameple # doesn't work
mv apple apple$name # works - just testing
我想重命名我的文件夾。重命名一個變量在中心的文件夾
當前文件夾名稱= 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