既存のフォルダをcpで上書きすることは可能ですか?例:
Tux@linux:~ $ cd /tmp/test/
Tux@linux:/tmp/test $ mkdir A
Tux@linux:/tmp/test $ cd A
Tux@linux:/tmp/test/A $ touch 1 2 3 4
Tux@linux:/tmp/test/A $ cd ..
Tux@linux:/tmp/test $ cp -R A A.bak
Tux@linux:/tmp/test $ tree
.
├── A
│ ├── 1
│ ├── 2
│ ├── 3
│ └── 4
└── A.bak
├── 1
├── 2
├── 3
└── 4
2 directories, 8 files
Tux@linux:/tmp/test $ touch A/5
Tux@linux:/tmp/test $ tree
.
├── A
│ ├── 1
│ ├── 2
│ ├── 3
│ ├── 4
│ └── 5
└── A.bak
├── 1
├── 2
├── 3
└── 4
2 directories, 9 files
Tux@linux:/tmp/test $ cp -R A A.bak
Tux@linux:/tmp/test $ tree
.
├── A
│ ├── 1
│ ├── 2
│ ├── 3
│ ├── 4
│ └── 5
└── A.bak
├── 1
├── 2
├── 3
├── 4
└── A
├── 1
├── 2
├── 3
├── 4
└── 5
3 directories, 14 files
ただし、次のようにする必要があります。
.
├── A
│ ├── 1
│ ├── 2
│ ├── 3
│ ├── 4
│ └── 5
└── A.bak
├── 1
├── 2
├── 3
├── 4
└── 5
2 directories, 10 files
これはあなたが探しているものです
cp -TRv A A.bak
オプション-T
を使用すると、内容が上書きされ、宛先はディレクトリではなく通常のファイルのように扱われます。
man cp
から:
-T, --no-target-directory
treat DEST as a normal file
-v, --verbose
explain what is being done
または、次のように、ディレクトリではなくディレクトリの内容をコピーします。
cp -TR A/* A.bak