Bash
使用 mv 時出錯
我在嘗試 mv 一些確實沒有意義的文件時收到錯誤消息。我收到此錯誤:
mv: cannot move `thatDir' to a subdirectory of itself, `/usr/local/apache-tomcat-6.0.32/webapps/thatDir'
執行以下命令替換 /webapps 中已存在的 thatDir 時:
From /home/myUser/war_files/ mv thatDir /usr/local/apache-tomcat-6.0.32/webapps
我還嘗試了所有方法:
sudo mv /home/myUser/war_files/thatDir /usr/local/apache-tomcat-6.0.32/webapps
沒有運氣。我擁有執行此操作的必要權限(加上我正在使用 sudo),但仍然沒有。我辦公室的其他人(不再在這里工作)以前也做過同樣的操作。
我試過用Google搜尋,甚至看到另一個關於 serverfault 的問題,但每個人都說與對該問題的評論相同:“也許涉及符號連結而你不知道。”
這不是問題。我嘗試使用 readlink -e 查看目錄(正如另一張票中的評論所暗示的那樣),但沒有涉及符號連結。
任何幫助,將不勝感激。
連結到與此相關的另一個問題: 無法將文件夾移動到其自身的子目錄 - 發生了什麼事?
正如我在下面的評論回復中提到的,這裡是重現此問題的步驟。如您所見,連結對此不負責任(另外,我使用的是 bash unix):
mkdir /home/myUser/testOuter cd /home/myUser/testOuter mkdir test1 cd test1 mkdir moveMe cd moveMe touch testfile1.txt cd ../.. mkdir test2 cd test2 mkdir moveMe cd moveMe touch testfile2.txt cd ../../test1 mv moveMe ../test2
然後我得到錯誤輸出:
mv: cannot move `moveMe' to a subdirectory of itself, `../test2/moveMe'
但它顯然不在其自身的子目錄中,也沒有涉及任何連結。
如果我從中刪除文件,它會起作用,
test2/moveMe/
但這是不可接受的,因為我需要用 test2 覆蓋 test1 中的所有文件,保留 test1 中不存在於 test2 中的現有文件(例如使用者生成的內容),並移入任何文件來自 test1 中尚不存在的 test2。(即正常的、每天類型的移動操作)。
實際上,閱讀您正在嘗試執行的操作時,您可能遇到了這個錯誤,有人指出當您嘗試用另一個目錄覆蓋非空目錄時收到錯誤消息(這是不允許的)。