web-dev-qa-db-ja.com

フォルダー自体なしでフォルダーからファイルをコピーする方法

[〜#〜] a [〜#〜]自体なしで[〜#〜] a [〜#〜]フォルダからファイルとサブフォルダをコピーしようとしています。たとえば、[〜#〜] a [〜#〜]フォルダには次のものが含まれます:

| file1.txt   
| file2.txt    
| subfolder1   

次のコマンドを実行すると、間違った結果が得られます。

Sudo cp -r /home/username/A/ /usr/lib/B/

結果は

/usr/lib/B/A/...copied files...

の代わりに..

/usr/lib/B/...copied files...

Origin-folderを使用せずに、期待される方法に到達するにはどうすればよいですか?

48
pushandpop

高度なcp

cp -r /home/username/A/. /usr/lib/B/

ターゲットディレクトリがすでに存在しているかどうかに関係なく機能するため、これは特に優れています。

シェルグロビング

ディレクトリにオブジェクトが多すぎない場合は、シェルグロビングを使用できます。

mkdir -p /usr/lib/B/
shopt -s dotglob
cp -r /home/username/A/* /usr/lib/B/

rsync

rsync -a /home/username/A/ /usr/lib/B/

/ソースパスの最後にあることが重要です。ターゲットディレクトリがすでに存在しているかどうかに関係なく機能します。

見つける

mkdir -p /usr/lib/B/
find /home/username/A/ -mindepth 1 -maxdepth 1 -exec cp -r -t /usr/lib/B/ {} +

または、空のサブディレクトリが必要ない場合:

find /home/username/A/ -mindepth 1 -type f -exec cp --parents -t /usr/lib/B/ {} +

mkdirなし)

80
Hauke Laging

GNUシステムの場合、man cp

   -T, --no-target-directory
          treat DEST as a normal file

これにより、cp -rT /home/username/A/ /usr/lib/B/正確に正しいことを行います。

12
michas

cpに、ディレクトリ自体ではなくディレクトリの内容をコピーするように指示します。

Sudo cp -r /home/username/A/* /usr/lib/B/
3
terdon