Чтобы имитировать cp --parents
, вам нужно использовать mkdir
и mv
вместе.
find . -name "*.extension" -exec sh -c 'dir=../NewFolder/$(dirname "{}"); mkdir -p "$dir" && mv -v "{}" "$dir"' \;
Подробная консольная нарезка-паста:
$ tree source
source
└── a
├── b
│ ├── b.extension
│ ├── c
│ │ └── c.extension
│ └── d
└── e
└── f
└── f.extension
6 directories, 3 files
$ tree dest
dest
0 directories, 0 files
$ cd source
$ find . -name "*.extension" -exec sh -c 'dir=../dest/$(dirname "{}"); mkdir -p "$dir" && mv -v "{}" "$dir"' \;
'./a/e/f/f.extension' -> '../dest/./a/e/f/f.extension'
'./a/b/c/c.extension' -> '../dest/./a/b/c/c.extension'
'./a/b/b.extension' -> '../dest/./a/b/b.extension'
$ cd ..
$ tree source
source
└── a
├── b
│ ├── c
│ └── d
└── e
└── f
6 directories, 0 files
$ tree dest
dest
└── a
├── b
│ ├── b.extension
│ └── c
│ └── c.extension
└── e
└── f
└── f.extension
5 directories, 3 files