Rename
mv 是否有類似 cp 的 –parents 選項?
cp
有一個有用的功能--parents
,允許將文件的目錄結構複製到另一個目錄:$ cp -v --parents source/directory/from target/ ‘source/directory/from’ -> ‘target/source/directory/from’
我如何類似地移動文件?
不是直接的,至少
mv
根據其手冊頁對於 GNU 來說不是。一種可能的解決方法是添加這樣的函式:pmv(){ source=$1 target=${2%/} mkdir -p -- "$target/$(dirname -- "$source")" && mv -- "$source" "$target/$(dirname -- "$source")/" }
將該函式添加到 shell 的配置文件中(
~/.bashrc
如果您使用的是 bash)並像這樣執行它:pmv source/directory/from target/
有沒有辦法以類似的方式移動文件?
無。
mv
是一個相當簡單的實用程序,如果可能的話,它使用系統呼叫rename
(原子FS 操作)——當源/目標位於同一個塊設備上時,否則它會退回到cp
行為。rename
即使您的 src/dst 是安裝到 Linux 允許的不同安裝點的同一設備,實際上也會失敗。因此,當您需要移動以下文件時:
cp -v --parents source/directory/from target/
你可以想到:
mv source target/
但請記住,它會沿途移動所有父目錄可能包含的整個內容
cp --parents
,因此您需要稍後處理 - 我的意思是如果您需要獲得相同的結果,請取消連結所有這些額外文件會提供。遲早你會意識到,你正在做的事情可以用
cp
/rm
方法輕鬆完成。And可用於使其快速執行,同時允許使用心愛cp
的. 這就是為什麼沒有像’s這樣花哨的東西的原因。-l``--parents``mv``cp``--parents