web-dev-qa-db-ja.com

yesと同等のmvを実行する方法|ディレクトリのcp-rf?

以下のディレクトリツリーを例として使用すると、directory/folderAの内容をdirectoryに移動するための最良の方法は何ですか。

同じ名前のファイルが宛先に存在する場合にファイルを上書きする方法(例:directory/folderA/2017/06/info.logおよびdirectory/2017/06/info.log)。

directory
|-- folderA
|   |-- 2017
|   |   |-- 06
|   |
|   |-- 2016
|   |   |-- 12
|   |   |-- 11
|   |   |-- 10
|
|-- 2017
|   |-- 04
|   |-- 05
|   |-- 06
|
|-- 2016
|   |
1
Greg

rsync -a --remove-source-files src/ destのようなもの?簡単なテストでは、destに存在するが、srcには存在しないものはすべて保持されることが示されています。 (srcの後のスラッシュに注意してください。ここで必要です。)

保存をさらに一歩進めて、--ignore-existingを追加すると、destにあるファイルがsrcにも存在していても上書きされません。ただし、--remove-source-filesは宛先に正常に転送されたファイルにのみ適用されるため、srcにファイルが残っている可能性があります。

一般的に、rsyncは、多数のオプションを備えた非常に強力なツールです。 (それに比例して、少し学習曲線があります...ここでのケースは非常に単純ですが、そうです。)まともなチャンスが来る前に誰かがコピーシナリオを考えた場合、それはrsyncでカバーされます。

1
B Layer
tar -cv /parent_folder/subfolder/* -f - I tar -xv --overwrite /parent_folder/

tarを使用してディレクトリ全体をパックし、親フォルダのunarにパイプするのが最善の選択かもしれません(bzipでtarファイルをフィルタリングする場合は、パイプの前と後の両方に-jを追加してください)

—overwrite:tarファイルから抽出したファイルで既存のファイルを上書きします

0
FrontENG