按名称合并嵌套目录
Merging nested directories by name
我正在寻找一种方法来合并两个名称匹配的嵌套目录的内容。新的组合文件夹需要放在一个新的目录中。如果目录 2 中没有与目录 1 中文件夹名称相匹配的文件夹,则仍必须将目录 1 中的文件夹复制到新的主目录中。
例如,假设我的目录结构如下:
* dir1
* foo
* file1
* bar
* file2
* extra
* file3
* dir2
* foo
* file4
* bar
* file5
我希望输出为:
* newdir
* foo
* file1
* file4
* bar
* file2
* file5
* extra
* file3
提前感谢您的帮助!
有两种方法。 ditto
适用于 OS X,用更少的命令完成工作。 cp -a
将适用于任何 bash shell.
这是我的测试文件夹,以您的示例为蓝本。
.
├── dir1
│ ├── bar
│ │ └── file2
│ ├── extra
│ │ └── file3
│ └── foo
│ └── file1
└── dir2
├── bar
│ └── file5
└── foo
└── file4
然后,运行以下之一(取决于您的平台):
OSX:
$ ditto dir1/ dir2/ newdir/
LINUX:
$ cp -a dir1/ newdir/
$ cp -a dir2/ newdir/
结果目录:
.
├── dir1
│ ├── bar
│ │ └── file2
│ ├── extra
│ │ └── file3
│ └── foo
│ └── file1
├── dir2
│ ├── bar
│ │ └── file5
│ └── foo
│ └── file4
└── newdir
├── bar
│ ├── file2
│ └── file5
├── extra
│ └── file3
└── foo
├── file1
└── file4
来源(同上):
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ditto.1.html
我正在寻找一种方法来合并两个名称匹配的嵌套目录的内容。新的组合文件夹需要放在一个新的目录中。如果目录 2 中没有与目录 1 中文件夹名称相匹配的文件夹,则仍必须将目录 1 中的文件夹复制到新的主目录中。
例如,假设我的目录结构如下:
* dir1
* foo
* file1
* bar
* file2
* extra
* file3
* dir2
* foo
* file4
* bar
* file5
我希望输出为:
* newdir
* foo
* file1
* file4
* bar
* file2
* file5
* extra
* file3
提前感谢您的帮助!
有两种方法。 ditto
适用于 OS X,用更少的命令完成工作。 cp -a
将适用于任何 bash shell.
这是我的测试文件夹,以您的示例为蓝本。
.
├── dir1
│ ├── bar
│ │ └── file2
│ ├── extra
│ │ └── file3
│ └── foo
│ └── file1
└── dir2
├── bar
│ └── file5
└── foo
└── file4
然后,运行以下之一(取决于您的平台):
OSX:
$ ditto dir1/ dir2/ newdir/
LINUX:
$ cp -a dir1/ newdir/
$ cp -a dir2/ newdir/
结果目录:
.
├── dir1
│ ├── bar
│ │ └── file2
│ ├── extra
│ │ └── file3
│ └── foo
│ └── file1
├── dir2
│ ├── bar
│ │ └── file5
│ └── foo
│ └── file4
└── newdir
├── bar
│ ├── file2
│ └── file5
├── extra
│ └── file3
└── foo
├── file1
└── file4
来源(同上): https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ditto.1.html