285

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

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

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

どうすればいいですか?私は試しましたcp -r t1 t2(t1とt2は両方とも既存のディレクトリで、t1にはファイルがあります)が、t2内にt1というディレクトリが作成されました.t2内に直接移動するには、t1内のファイルが必要です。どうすればいいですか?

4

8 に答える 8

457

あなたが望むものは:

cp -R t1/. t2/

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

于 2011-01-10T09:11:28.327 に答える
44
cp dir1/* dir2

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

cp -r dir1/* dir2
于 2010-09-04T20:14:58.867 に答える
36

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

cp dir1/* .

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

于 2012-10-17T08:55:53.340 に答える
5
cp -R t1/ t2

ソース ディレクトリの末尾のスラッシュはセマンティクスをわずかに変更するため、内容はコピーされますが、ディレクトリ自体はコピーされません。また、Bertrand の回答にあるグロビングと不可視ファイルの問題も回避されます (t1/*不可視ファイルをコピーすると、不可視ファイルが失われ、't1/* t1/.*' をコピーすると t1/. と t1/.. がコピーされますが、これは望ましくありません)。

于 2010-09-04T21:14:19.033 に答える
2

いくつかの詳細に応じて、次のようなことをする必要があるかもしれません:

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

...これは基本的にSRCディレクトリに変更され、それをターゲットにコピーしてから、開始した場所に戻ります。

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

(これは、コマンド自体の微妙なセマンティクスに依存していませんcp...末尾の/の有無にかかわらずソース仕様をどのように処理するかについて...それらがGNUcpと私だけを超えて安定性、移植性、信頼性があるかどうかわからないため今後もそうであるかどうかはわかりません)。

于 2010-09-04T21:41:26.877 に答える