web-dev-qa-db-ja.com

あるディレクトリから既存のディレクトリにファイルをコピーする

Bashでは、これを行う必要があります。

  1. ディレクトリ内のすべてのファイルを取ります

  2. 既存のディレクトリにそれらをコピーする

どうやってこれをするの?私はcp -r t1 t2を試しました(t1とt2は両方とも既存のディレクトリです、t1はそれにファイルを持っています)、それはt2の中にt1と呼ばれるディレクトリを作成しました。どうやってこれをするの?

210
David Chang

あなたが欲しいのは:

cp -R t1/. t2/

末尾のドットは、ディレクトリ自体ではなく、現在のディレクトリの内容をコピーするように指示しています。この方法には、隠しファイルと隠しフォルダも含まれます。

345
Nick

あるディレクトリからcurrentディレクトリに何かをコピーしたい場合は、次のようにします。

cp dir1/* .

これはあなたが隠しファイルをコピーしようとしていないことを前提としています。

30
Karl Giesing
cp dir1/* dir2

またはdir1の中にコピーしたいディレクトリがある場合

cp -r dir1/* dir2
28
Bertrand Marron

T1がファイルを格納しているフォルダ、t2が空のディレクトリであるとします。あなたが欲しいものはこのようなものです:

Sudo cp -R t1/* t2/

最初の例では、t1とt2はフルパス、または相対パス(現在地に基づく)でなければなりません。必要に応じて、空のフォルダ(t2)に移動してこれを実行できます。

Sudo cp -R t1/* ./

または、ファイルのあるフォルダ(t1)に移動してこれを実行します。

Sudo cp -R ./* t2/

注:*記号(またはワイルドカード)は、すべてのファイルとフォルダを表します。 -Rフラグは再帰的に(すべての中のすべてのものを)意味します。

8
Konkret
cp -R t1/ t2

ソースディレクトリの末尾のスラッシュはセマンティクスをわずかに変更するため、内容はコピーされますがディレクトリ自体はコピーされません。それはまたBertrandの答えが持っているグロビングと見えないファイルに関する問題を避けます(t1/*をコピーすることは見えないファイルを見逃し、 `t1/* t1 /.* 'をコピーすることはあなたが望まない)。

3
Gordon Davisson

詳細によっては、次のようにする必要があります。

r=$(pwd)
case "$TARG" in
    /*) p=$r;;
    *) p="";;
    esac
cd "$SRC" && cp -r . "$p/$TARG"
cd "$r"

...これは基本的にSRCディレクトリに変更してそれをターゲットにコピーし、それからあなたが始めたところまで戻ります。

余分な手間は相対的または絶対的なターゲットを処理することです。

(これは、cpコマンド自体の微妙な意味には依存しません。末尾の/を付けて、または付けずにソース仕様を処理する方法について...安定性、移植性、信頼性が確かではないため、GNU cpと、将来もそうなるかどうかはわかりません)。

2
Jim Dennis

あるディレクトリの中では、 "folder1"からあるディレクトリの中の新しいディレクトリ "folder2"にすべての内容をコピーするので、これは完全に使われるでしょう。

$(pwd)は現在のディレクトリへのパスを取得します。

Folder1内のすべての内容を取得するには、folder1の後のドット(。)に注目してください。

cp -r $(pwd)/folder1/. $(pwd)/folder2
0
ashish Kumar