bashではこれを行う必要があります:
ディレクトリ内のすべてのファイルを取得する
それらを既存のディレクトリにコピーする
どうすればよいですか?私は試しましたcp -r t1 t2
(t1とt2の両方が既存のディレクトリであり、t1にはファイルが含まれています)が、t2内にt1という名前のディレクトリが作成されました。どうすればよいですか?
bashではこれを行う必要があります:
ディレクトリ内のすべてのファイルを取得する
それらを既存のディレクトリにコピーする
どうすればよいですか?私は試しましたcp -r t1 t2
(t1とt2の両方が既存のディレクトリであり、t1にはファイルが含まれています)が、t2内にt1という名前のディレクトリが作成されました。どうすればよいですか?
回答:
あなたが欲しいのは:
cp -R t1/. t2/
末尾のドットは、ディレクトリ自体ではなく、現在のディレクトリの内容をコピーするように指示します。この方法には、隠しファイルとフォルダーも含まれます。
mv
。なぜ誰か知っていますか?
あるディレクトリから現在のディレクトリに何かをコピーしたい場合は、次のようにします。
cp dir1/* .
これは、隠しファイルをコピーしようとしていないことを前提としています。
cp dir1/* dir2
または、dir1内にもコピーしたいディレクトリがある場合
cp -r dir1/* dir2
dir1/.*
そのコピーDIR1 / ..(あなたが実際にコピーしようとしているディレクトリのつまり親)として、良いアイデアではありません。また、dir1 /もコピーします。これは問題ありませんが、すでに(ほとんど)コピーされているので、作業を2回行うことになります。
dir1/.*
/ hiddenファイルの問題を回避するには、コピー元のディレクトリにcd-ingし、それをとして参照し.
ます。だから、あなたは、既存のディレクトリへのディレクトリから隠しファイルを含むすべてのファイルをコピーしたい場合は、次のことができますcd [source dir]
、 cp . [path to destination dir, with no trailing slash]
。
t1がファイルを含むフォルダーであり、t2が空のディレクトリであると仮定します。あなたが望むのはこのようなものです:
sudo cp -R t1/* t2/
最初の例では、t1とt2は絶対パスまたは(現在の場所に基づく)相対パスでなければならないことに注意してください。必要に応じて、空のフォルダ(t2)に移動してこれを行うことができます。
sudo cp -R t1/* ./
または、ファイル(t1)のあるフォルダーに移動して、次のように実行できます。
sudo cp -R ./* t2/
注:*記号(またはワイルドカード)は、すべてのファイルとフォルダーを表します。-Rフラグは再帰的に(すべての中のすべてのもの)を意味します。
cp -R t1/ t2
ソースディレクトリの末尾のスラッシュはセマンティクスをわずかに変更するため、内容はコピーしますがディレクトリ自体はコピーしません。また、Bertrandの回答にあるグロビングと不可視ファイルの問題も回避します(コピーすると不可視ファイルが欠落し、t1/*
`t1 / * t1 /.* 'をコピーするとt1 /。とt1 / ..は不要になります)。
$ mkdir t1
$ mkdir t2
$ touch t1/one
$ touch t1/two
$ touch t1/.three
$ cp -R t1/ t2
$ ls t2/
t1
(コメントで申し訳ありませんがないcodeformat、で読めるバージョンpastebin.com/yszSxV6G)
詳細によっては、次のようなことを行う必要がある場合があります。
r=$(pwd)
case "$TARG" in
/*) p=$r;;
*) p="";;
esac
cd "$SRC" && cp -r . "$p/$TARG"
cd "$r"
...これは基本的にSRCディレクトリに変わり、それをターゲットにコピーしてから、開始した場所に戻ります。
追加の大騒ぎは、相対または絶対ターゲットを処理することです。
(これは、cp
コマンド自体の微妙なセマンティクスに依存しません...末尾の/の有無にかかわらず、ソース仕様をどのように処理するかについて...それらが安定していて、移植性があり、GNU cp
および将来もそうなるかどうかはわかりません)。
一部のディレクトリ内では、「folder1」からすべてのコンテンツを一部のディレクトリ内の新しいディレクトリ「folder2」にコピーするため、これは完全に使用されます。
$(pwd)は現在のディレクトリのパスを取得します。
folder1内のすべてのコンテンツを取得するために、folder1の後にドット(。)があることに注意してください。
cp -r $(pwd)/folder1/. $(pwd)/folder2
cp
質問はbash
プログラミング言語である質問と見なすことができます。ファイルのコピーについて話しているPythonの質問が閉じられるのを見たことがありません。