我有一个目录main_dir,其中包含许多文件和3个子目录(dir1和dir2和dir3)。我想将其复制到另一个位置,而不用一个命令复制dir2。我搜索了cp手册,以查看是否可以通过某种方式完成此操作,但是我没有找到答案。我唯一的解决方案是复制整个目录,然后在复制的位置删除dir2。
cp -r main_dir ~/Documents/main_dir_copy
cd ~/Documents/main_dir_copy
rm -r dir2
有没有一种方法可以不必复制dir2的所有内容然后删除它?
在bash中,您可以使用扩展的glob来实现求反。
给定
$ tree main_dir
main_dir
├── dir1
│ ├── other file
│ └── somefile
├── dir2
│ ├── other file
│ └── somefile
├── dir3
│ ├── other file
│ └── somefile
└── file
3 directories, 7 files
然后
shopt -s extglob
cp -r main_dir/!(dir2) main_dir_copy/
导致
$ tree main_dir_copy
main_dir_copy
├── dir1
│ ├── other file
│ └── somefile
├── dir3
│ ├── other file
│ └── somefile
└── file
2 directories, 5 files
需要注意的是,因为这递归复制内容的main_dir
(不包括定dir2
),而不是main_dir
本身的目标目录main_dir_copy
必须已经存在-如果没有,添加mkdir main_dir_copy
到命令序列。
也可以看看
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句