この問題を回避することは可能ですか?
一部のファイルを下の1つのディレクトリに移動する必要がある状況があります。
/a/b/c/d/e/f/g
問題は、g/
ディレクトリはディレクトリ名と同じです
そして私は次のエラーを受け取ります:
mv: cannot overwrite directory `../297534' with non-directory
例:/home/user/data/doc/version/3766/297534はディレクトリで、中には297534という名前のファイルもあります
このファイルを/ home/user/data/doc/version/3766内に移動する必要があります
コマンドこれは私が実行しているものです:(forループで)
cd /home/user/data/doc/version/3766/297534
mv * ../
Mvに、同じ名前のファイルでディレクトリを上書きさせることはできません。 mvコマンドを使用する前に、そのファイルを削除する必要があります。
ループにレイヤーをもう1つ追加します。
mv * ../
を
for f in `ls`; do rm -rf ../$f; mv $f ..; done
これにより、上書きするディレクトリを気にしないと想定して、競合が最初に確実に削除されます。
現在のディレクトリの名前と一致するファイルが現在のディレクトリ内にある場合は、このwillが爆発することに注意してください。たとえば、あなたが/home/user/data/doc/version/3766/297534
にいて、297534
というディレクトリを上に移動しようとしているとします。これに対する1つの回避策は、すべてのファイルに長いサフィックスを追加することです。そのため、一致する可能性はほとんどありません。
for f in `ls`; do mv $f ../${f}_abcdefg; done