У меня есть основная папка с несколькими подпапками (которые имеют нумерованный формат имени), и мне нужно извлечь только те, которые начинаются с 6, в папку. Могу ли я сделать это рекурсивно?
find . -type d -name '6*' -prune -exec mv "{}" DESTINATION_FOLDER/
Опция -prune
требуется, чтобы остановить find
повторение в каталогах, которых больше не будет после перемещения.
Предположим, у нас есть такая структура:
$ mkdir 1dir 2dir 6dir 6anotherdir 1dir/666dir ../targetdir
$ touch 6file somefile 1dir/a 2dir/b 6dir/c 1dir/666dir/d
$ tree -F . ../targetdir
.
├── 1dir/
│ ├── 666dir/
│ │ └── d
│ └── a
├── 2dir/
│ └── b
├── 6anotherdir/
├── 6dir/
│ └── c
├── 6file
├── somefile
../targetdir
5 directories, 6 files
Затем мы можем переместить каталоги, начиная с 6
, следующим образом (предполагая, что targetdir
- это ваш целевой каталог, мы создали уровень выше текущего) :
find . -name "6*" -type d -prune -exec mv "{}" ../targetdir/ \;
Результат:
tree -F . ../targetdir/
.
├── 1dir/
│ └── a
├── 2dir/
│ └── b
├── 6file
└── somefile
../targetdir/
├── 666dir/
│ └── d
├── 6anotherdir/
└── 6dir/
└── c
5 directories, 6 files