以另一种最快的方式复制并替换到文件夹 - linux bash

swe*_*web 2 linux bash cp

我有一个三个文件夹:coreproject并与里面的许多文件合并。我想删除merge文件夹内的所有文件和文件夹(包括dot文件),然后将core文件夹中的所有文件(包括dot文件)复制到merge文件夹,同时将project文件夹下的所有文件都合并merge文件。

情况

  1. 如何从特殊文件夹中删除所有文件和文件夹(包括点文件),而不删除它们?(rm -rf /path/to/folder/*没有删除文件和文件夹。)
  2. 将所有文件从特殊文件夹递归复制(包括和不合并和替换)到另一个文件夹(包括点文件)的最快方法是什么?( tar -cf my.tar path/; tar -xf my.tar)

我正在使用 tar,但文件太多,我需要更快的方法。

Jef*_*and 7

删除

rm -r merge/* merge/.*
rm: "." and ".." may not be removed
Run Code Online (Sandbox Code Playgroud)

您可以放心地忽略该警告。就个人而言,我可能只是rm -r merge对目录本身进行核对。

复印

cp -r core/ merge/
Run Code Online (Sandbox Code Playgroud)

...但这会覆盖合并目录。

cd core && find . -exec cp "{}" "../merge/{}" \;
Run Code Online (Sandbox Code Playgroud)

有点慢且难以编写,但功能齐全且不会破坏父目录。

一次全部

rsync -av --delete core/ merge/
Run Code Online (Sandbox Code Playgroud)