ディレクトリ(サブディレクトリとファイルを含む)を別のディレクトリに移動しようとしています。一部のmv
フォルダは、ファイルが同じディレクトリに存在するため、マージされません。これは、ソースディレクトリにあるファイルが最新バージョンであっても移動すると削除されるため、これはお勧めできません。
次のコマンドが必要です。
- 宛先ディレクトリに存在しないディレクトリを移動します。
- ターゲットディレクトリにすでに存在するディレクトリをマージします。
- 重複したファイルの名前を変更します(たとえば、
file.txt
すでに存在する場合はソースファイルの名前をに変更しますfile(1).txt
)。
私はこれらすべてを処理するものが見つかりませんでした。
編集する
次のコマンドを試してみました。
mv -u [source] [destination]
ターゲットに存在しないディレクトリだけを移動し、重複した内容があるディレクトリは削除されると思います。したがって、ソースディレクトリのすべての最新ファイルは移動時に失われます。代わりに、これらのディレクトリをマージし、重複したファイルの名前を変更する必要があります。私はそれを十分に説明したことを願っています。
PS これは、ターミナルコマンドで書かれた場合に最適です。スクリプトを作成した経験はありません。
助けてくれてありがとう!
答え1
ファイルが思ったように移動しないことがあります。-t
or-T
オプションを使用することをお勧めしますmv
。
答え2
これは私が必要とするものを達成するために使用したものです。完璧ではありませんが、多くのディレクトリが移動されたため、移動/マージは99%完了しました。
まず、「mv」を使用して、すべてのディレクトリを存在しない新しいターゲットに移動しました。各ターゲットフォルダには、「a、b、c ...」というラベルが付けられています。 「A」で始まる各ソースディレクトリを対応するターゲットディレクトリ(「a」)に移動したいと思います。
mv -u /[source directory]/A* /[destination directory]/a && mv -u /[source directory]/B* /[destination directory]/b && so on and so on...
%がすでにターゲットに存在するため、すべてのディレクトリを移動するわけではありません。次に、上記とrsync
非常によく似たコマンドを実行します。
rsync --progress --remove-source-files -arvu /[source directory]/A* /[destination directory]/a && rsync --progress --remove-source-files -arvu /[source directory]/B* /[destination directory]/b && and so on and so on...
私のターゲットディレクトリはAZと0-9だったので、文字と数字を変更しながらこのコマンドを続けて実行し、コマンドを&&
。コマンド。
これを達成するために、次のコマンドを実行しました。
find . -type d -empty -print -delete
これは rsync が残した空のディレクトリを処理します。 rsyncを介してこれを行うことはできますか?わかりません。私は新しいことを学ぶためにここに来た初心者です。
私が言ったように完璧ではありませんが、私には効果があり、これが他の人にも役立つことを願っています。