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 cmd:
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の名前を変更することで、問題なく移動できます。
私が考えることができる少なくとも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
最初の方法は、おそらくあなたの質問に対するより良い答えです。