我有一个主文件夹,里面有几个子文件夹(采用数字名称格式),我需要将以 6 开头的子文件夹检索到一个文件夹中。我可以递归执行此操作吗?
答案1
假设我们有这样的结构:
$ 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
答案2
find . -type d -name '6*' -prune -exec mv "{}" DESTINATION_FOLDER/
-prune
需要该选项来停止find
递归到移动后不再存在的目录。