如何在linux中删除除某些子目录外的整个目录?

  • 本文关键字:子目录 linux 删除 linux bash rm
  • 更新时间 :
  • 英文 :


假设我在linux中运行以下命令:

$ mkdir -p mp3 jpeg/dir1 jpeg/dir2 txt
$ touch mp3/1.mp3 mp3/2.mp3 mp3/3.mp3
$ touch jpeg/1.jpeg jpeg/2.jpeg jpeg/3.jpeg
$ touch txt/1.txt txt/2.txt txt/3.txt
这将创建一个目录结构,如:
├── jpeg
│   ├── 1.jpeg
│   ├── 2.jpeg
│   └── 3.jpeg
│   └── dir1
│   └── dir2
├── mp3
│   ├── 1.mp3
│   ├── 2.mp3
│   └── 3.mp3
└── txt
├── 1.txt
├── 2.txt
└── 3.txt

如何调用linux "rm"命令,删除"jpeg"目录,除了"dir2"子目录吗?

所以我要找的命令看起来像:

rm -rf -not dir2 jpeg

但是当我在Centos 7上运行该命令时,我得到以下错误消息:

rm: invalid option -- 'n'

我的目标输出目录结构应该看起来像:

├── jpeg
│   
│   
│   
│   
│   └── dir2
├── mp3
│   ├── 1.mp3
│   ├── 2.mp3
│   └── 3.mp3
└── txt
├── 1.txt
├── 2.txt
└── 3.txt

感谢来自linux脚本社区的所有帮助

您可以使用此find命令删除jpeg目录下除dir2以外的所有内容:

find jpeg -mindepth 1 -not -path 'jpeg/dir2' -prune -delete

最新更新