2017-07-12 7 views
0

現在の時刻と日付に基づいてフォルダを作成するスクリプトを作成しようとしています。次に、ソースフォルダーから新しく作成したフォルダーにファイルをコピーするスクリプトが必要です。 2番目のソースフォルダから元のソースフォルダにフォルダをコピーし、そこにあるすべてのファイルを上書きする必要があります。日付/時刻に基づいてディレクトリを作成し、ファイルをそこにコピーしますか?

以下は私が試したものであり、かなり壮大な方法で失敗しています。

#!/bin/bash 

d="/home/$(date +%d-%m-%y")" 
mkdir "$d" 
cp /home/test "$d" 
cp /home/test2 /home/test 

私はコピー間の時間を秒で一日経過べきではないとして、変数を定義する必要はありませんことを認識してんだけど、私はことを確認したかったし、正直、私はに興味スクリプトで変数を使うことを学ぶ。

+0

見てみてください:http://www.shellcheck.net/ – Cyrus

+0

あなたが_に必要と言います"ソースフォルダからファイルをコピーする" _ただし、 '/ home/test'が_file_の場合にのみ' cp/home/test somewhere'が動作します。あなたは 'cp/home/test/*/some/dir /'または 'cp -r/home/test/some/dir /' –

+0

* "...これはかなり壮大な方法で失敗しています。問題文はそれほど役に立ちません。どのように失敗しているのかを詳しくお聞かせください。 – jww

答えて

0

ここ1つのあまりにも多くの二重引用符があります:

d="/home/$(date +%d-%m-%y")" 

実際には引用符はこのように書き、全くここでは必要です:スクリプトの残りの部分で

d=/home/$(date +%d-%m-%y) 

ディレクトリをコピーする場合は、単にcpの代わりにcp -rを使用する必要があります。

最後に、dir2がすでに存在しているときに、cp -r dir1 dir2を行うときにdir1ではなく、その内容を上書きするよりも、dir2内部でコピーされることに注意してください。つまり、dir2/dir1が作成されます。 dir1は隠しファイルが含まれていない場合は、dir2の内容を上書きするために、次のように書くことができます。

cp -r dir1/* dir2/ 
+0

ありがとうございました! – Ryan

+0

@ Ryanこれがあなたの質問に答えたなら、あなたはそれを受け入れることができるかもしれません(投票ボタンの下のチェックマークを見てください) – janos

関連する問題