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

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

次に、ファイルとサブフォルダをコピーしようとします。フォルダがありませんそれ自体。例えば、フォルダには次の項目が含まれます。

| 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...

なしでどのように目的を達成できますか?ソースフォルダ

答え1

高度な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 -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

答え2

GNUシステムの場合は、次のようにしますman cp

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

cp -rT /home/username/A/ /usr/lib/B/これにより、正しい内容を作成できます。

答え3

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

sudo cp -r /home/username/A/* /usr/lib/B/

関連情報