将某些子文件夹移动到另一个文件夹

将某些子文件夹移动到另一个文件夹

我有一个主文件夹,里面有几个子文件夹(采用数字名称格式),我需要将以 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递归到移动后不再存在的目录。

相关内容