web-dev-qa-db-ja.com

同じコマンドでディレクトリをコピーして名前を変更するにはどうすればよいですか?

現在、私はこれら2つのコマンドを実行して、ディレクトリのクイックバックアップを作成しています。 2つのコマンドを1つにまとめて、1つのコマンドで新しいディレクトリをコピーして名前を変更する方法はありますか?

#cp -R /tf/Custom_App /tf/Custom_App_backups/
#mv /tf/Custom_App_backups/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
15
AllisonC

あなたはちょうどできるはずです

cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21

ただし、ターゲットディレクトリが既に存在する場合、これによりソースパスの最後の部分が宛先パスに追加され、/tf/Custom_App_backups/Custom_App_2017-12-21/Custom_Appが作成されます。その後、ツリー内の残りの部分をコピーします。

これを防ぐには、ソースとして/tf/Custom_App/.を使用します。もちろん、その場合、コピー後に古いファイルをそこに置いておきたくない場合は、最初にrm -r /tf/Custom_App_backups/Custom_App_2017-12-21を使用することをお勧めします。

/some/dir/some/dir/.の違いについては、しばらく前に説明しました (。(ドット)または..(ドットドット)がソースディレクトリの場合、cpは奇妙に動作します

21
ilkkachu

または、次のようにすることもできます。

mkdir /tf/Custom_App_backups/Custom_App_2017-12-21 # prepare the target location
cp -R /tf/Custom_app/. /tf/Custom_App_backups/Custom_App_2017-12-21 # copy only the contents

これにより、事前にカスタムの場所を指定できます。また、サフィックス/.を使用していることにも注意してください。これにより、コンテンツをコピーして、それを含むフォルダーのみを除外できます。この場合、Custom_appフォルダーです。