Linux
重命名包含許多文件的目錄
我在 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
第一種方法可能更好地回答您的問題。