Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash:删除除一个目录之外的所有目录_Bash - Fatal编程技术网

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日)/':没有这样的文件或目录