ディレクトリを取得し、そのすべてのファイルを作成した新しいディレクトリにコピーするスクリプトを作成しようとしています。したがって、スクリプトには 2 つの引数があります。1 つ目は既存のディレクトリで、2 つ目は作成されたディレクトリです。
これが私がこれまでに持っているものです:
dir1=$1
dir2=$2
mkdir $2
cp $1/. $2
それでも、私の新しいディレクトリは常に空です。構文エラーですか?
ディレクトリを取得し、そのすべてのファイルを作成した新しいディレクトリにコピーするスクリプトを作成しようとしています。したがって、スクリプトには 2 つの引数があります。1 つ目は既存のディレクトリで、2 つ目は作成されたディレクトリです。
これが私がこれまでに持っているものです:
dir1=$1
dir2=$2
mkdir $2
cp $1/. $2
それでも、私の新しいディレクトリは常に空です。構文エラーですか?
コピーするように指示すると.
、実際にはディレクトリをコピーするように指示されます(.
ディレクトリが含まれているディレクトリにリンクしているためcd ././././././././
、同じディレクトリでループします)。
次のいずれかを実行できます。
cp $1/* $2
すべてのファイルを「$1」から「$2」にコピーしますが、サブディレクトリはコピーしません
cp $1/. -r $2
すべてのファイルとサブディレクトリを再帰的にコピーし、特別なファイルを通常のファイルのように扱います(つまり、パイプが見つかった場合は、パイプから読み取り、通常のファイルに書き込みます)。
cp $1/. -R $2
すべてのファイルとサブディレクトリを再帰的にコピーし、特別なファイルを保持します
cp $1/. -a $2
すべてをコピーし、リンク、グループ権限、および特殊ファイルを保持します。
これがお役に立てば幸いです=)
cp -r $1/. $2
再帰を追加する必要がありますか。
cp $1/. $2
ドットの代わりにワイルドカードを使用する必要があると思います
cp $1/* $2
別の方法は、再帰コピーを使用することです
cp -r $1/* $2 # copy the whole directory into the second one recursively (e.i. including subdirectories)
cp -ar $1/* $2 # this will keep the sym links intact (not trying to replace them with the file they point)