Bash:删除除一个目录之外的所有目录
我有如下文件夹结构Bash:删除除一个目录之外的所有目录,bash,Bash,我有如下文件夹结构 ├── tmp └── Dir1 |__Dir2 |__Dir3 |__Dir4 我当前的工作目录不同,它是/home/users/aaa,从这里我想删除Dir1中除Dir2之外的所有内容 我有一个有效的解决方案,那就是 abc=Dir2 shopt -s extglob `rm -r /tmp/Dir1/!($abc)/` 但不知何故,这个解决方案是团队无法接受的 除了一个目录外
├── tmp
└── Dir1
|__Dir2
|__Dir3
|__Dir4
我当前的工作目录不同,它是/home/users/aaa,从这里我想删除Dir1中除Dir2之外的所有内容
我有一个有效的解决方案,那就是
abc=Dir2
shopt -s extglob
`rm -r /tmp/Dir1/!($abc)/`
但不知何故,这个解决方案是团队无法接受的
除了一个目录外,您还有其他的删除目录的解决方案吗
下面是我的实际代码
current_date=`date +"%Y_%m_%d"
#remove all containt of folder /tmp/metdata if they are older
shopt -s extglob
`rm -r /tmp/metdata/!($current_date)/`
上述解决方案可行,但团队不接受:(
正在删除“/tmp/metdata/”中的所有内容,但名称为current\u date的文件夹除外
实际上,问题是如果/tmp/metdata/中没有文件夹,每次都会显示下面的消息,我不想显示此消息
rm: cannot remove ‘/tmp/metdata/!(2020_05_15)/’: No such file or directory
在这之前我们能检查一下情况吗
谢谢你的帮助
请帮助查找/tmp/Dir1-maxdepth 1-mindepth 1!-名称Dir2-exec rm-rf{}+
current\u date=$(日期+%Y\u%m\u%d)
find/tmp/Dir1-maxdepth 1-mindepth 1!-名称“${current_date}”-exec rm-rf{}+
您的团队可能正在寻找一种不那么神奇、更直截了当的方法,比如用循环遍历所有目录,并有条件地删除rm
命令中的Remove backticks。实际上,问题是/tmp/metdata/中没有文件夹,每次我不想删除时,它都会显示下面的消息播放此消息rm:无法删除“/tmp/metdata/!(2020_05_15)/”:没有此类文件或directory@Cyrus实际上,问题是如果/tmp/metdata/中没有文件夹,每次我不想显示此消息时,它都会显示下面的消息rm:cannot remove'/tmp/metdata/!(2020年05月15日)/':没有这样的文件或目录