Rename

mv 是否有類似 cp 的 –parents 選項?

  • August 4, 2021

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

引用自:https://unix.stackexchange.com/questions/97131