Linux

重命名包含許多文件的目錄

  • October 11, 2012

我在 a 中犯了一個錯誤,rsync所有文件都被複製了很長的完整路徑。我複制的所有文件都在

/var/www/photos/2012/1007/1007

嘗試 1

現在我想通過這樣做來修復路徑

mv /var/www/photos/2012/1007/1007 /var/www/photos/2012

這給出了錯誤:

mv: cannot move `/var/www/photos/2012/1007/1007' to `/var/www/photos/2012/1007': Directory not empty

嘗試 2

mv /var/www/photos/2012/1007/1007/* /var/www/photos/2012/1007

我得到錯誤:

-bash: /bin/mv: Argument list too long

**問題:**重命名包含大量文件的文件夾的正確方法是什麼?


這些文件實際上被複製到/var/www/photos/2012/1007/home/photos/public_html/2012/1007但不知何故我讓它們/var/www/photos/2012/1007/1007

同步命令:

rsync -zavrR --rsh="ssh -c arcfour -l root -p 2200" www.mydomain.com:/home/photos/public_html/2012/1007 /var/www/photos/2012/1007

這在我的測試中適用於您提供的路徑:

cd /var/www/photos
mv 2012 old
mv old/1007/1007 .
mv 1007 2012

發生的事情是您試圖將目錄移動到現有目錄的頂部 - 它不喜歡這樣做,因為目錄中有東西。通過首先重命名 2012,您可以毫無問題地移動它。

至少我能想到兩種方法:

**1:**首先將/var/www/photos/2012/1007重命名為/var/www/photos/2012/temppath,然後mv /var/www/photos/2012/temppath/1007 -> /var/www/photos/2012 /,然後是 rmdir /var/www/photos/2012/temppath。

**2:**使用一個簡單的腳本來移動內容:

for f in `find /var/www/photos/2012/1007/1007 -mindepth 1`; do mv $f /var/www/photos/2012/1007/1007/../; done

第一種方法可能更好地回答您的問題。

引用自:https://serverfault.com/questions/437413