1

ディレクトリを取得し、そのすべてのファイルを作成した新しいディレクトリにコピーするスクリプトを作成しようとしています。したがって、スクリプトには 2 つの引数があります。1 つ目は既存のディレクトリで、2 つ目は作成されたディレクトリです。

これが私がこれまでに持っているものです:

dir1=$1
dir2=$2

mkdir $2
cp $1/. $2

それでも、私の新しいディレクトリは常に空です。構文エラーですか?

4

3 に答える 3

1

コピーするように指示すると.、実際にはディレクトリをコピーするように指示されます(.ディレクトリが含まれているディレクトリにリンクしているためcd ././././././././、同じディレクトリでループします)。

次のいずれかを実行できます。

cp $1/* $2

すべてのファイルを「$1」から「$2」にコピーしますが、サブディレクトリはコピーしません

cp $1/. -r $2

すべてのファイルとサブディレクトリを再帰的にコピーし、特別なファイルを通常のファイルのように扱います(つまり、パイプが見つかった場合は、パイプから読み取り、通常のファイルに書き込みます)。

cp $1/. -R $2

すべてのファイルとサブディレクトリを再帰的にコピーし、特別なファイルを保持します

cp $1/. -a $2

すべてをコピーし、リンク、グループ権限、および特殊ファイルを保持します。

これがお役に立てば幸いです=)

于 2012-10-11T17:43:24.793 に答える
1
cp -r $1/. $2

再帰を追加する必要がありますか。

于 2012-10-11T17:30:25.210 に答える
0

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)
于 2012-10-11T17:38:45.730 に答える