Shell

如何將子目錄(和文件)移動和覆蓋到父目錄?

  • February 20, 2021

我想移動到父目錄的子目錄中有大量文件和目錄。目標目錄中已經有一些文件和目錄需要覆蓋。僅存在於目標中的文件應保持不變。我可以強制mv這樣做嗎?它 ( mv * ..) 抱怨

mv: cannot move `xyz' to `../xyz': Directory not empty

我錯過了什麼?

您必須將它們複製到目的地,然後使用cp -r * ..後跟的命令刪除源rm -rf *

我認為您不能使用mv.

rsync在這裡可能是一個更好的選擇。就像rsync -a subdir/ ./.

我的測試樹格式filenamecontents

./file1:root
./file2:root
./dir/file3:dir
./dir/file4:dir
./subdir/dir/file3:subdir
./subdir/file1:subdir

執行rsync

$ rsync -a -v subdir/ ./
sending incremental file list
./
file1
dir/
dir/file3

給出:

./file1:subdir
./file2:root
./dir/file3:subdir
./dir/file4:dir
./subdir/dir/file3:subdir
./subdir/file1:subdir

然後,要 emulate mv,您可能想要刪除源目錄:

$ rm -r subdir/

給予:

./file1:subdir
./file2:parent
./dir/file3:subdir
./dir/file4:dir

如果這是錯誤的,您能否提供一個類似的範例(例如,使用此答案頂部附近的我的測試樹)以及所需的結果?

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