我在 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
第二次尝试
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 命令:
rsync -zavrR --rsh="ssh -c arcfour -l root -p 2200" www.mydomain.com:/home/photos/public_html/2012/1007 /var/www/photos/2012/1007
答案1
在我测试的你给出的路径下,这个方法有效:
cd /var/www/photos
mv 2012 old
mv old/1007/1007 .
mv 1007 2012
实际情况是,您试图将目录移到现有目录之上 - 但系统不喜欢这样做,因为目录中有内容。通过先重命名 2012,您可以毫无问题地移动它。
答案2
我能想到至少两种方法:
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
第一种方法可能能更好地回答您的问题。