linux环境中,一个目录下,除了特定的目录和这个目录里面的内容,删除所有其他的目录和文件的方法

有个tomcat目录,如下:

 

[root@nccztsjb-node-27 apache-tomcat-9.0.75]# ls -l
total 148
drwxr-x--- 2 root root  4096 Jul 20 14:37 bin
-rw-r----- 1 root root 19992 May  4 21:04 BUILDING.txt
drwx------ 2 root root  4096 May  4 21:04 conf
-rw-r----- 1 root root  6210 May  4 21:04 CONTRIBUTING.md
drwxr-x--- 2 root root  4096 Jul 20 14:37 lib
-rw-r----- 1 root root 57092 May  4 21:04 LICENSE
drwxr-x--- 2 root root  4096 May  4 21:04 logs
-rw-r----- 1 root root  2333 May  4 21:04 NOTICE
-rw-r----- 1 root root  3398 May  4 21:04 README.md
-rw-r----- 1 root root  6901 May  4 21:04 RELEASE-NOTES
-rw-r----- 1 root root 16505 May  4 21:04 RUNNING.txt
drwxr-x--- 2 root root  4096 Jul 20 14:37 temp
drwxr-x--- 7 root root  4096 May  4 21:04 webapps
drwxr-x--- 2 root root  4096 May  4 21:04 work
[root@nccztsjb-node-27 apache-tomcat-9.0.75]# 

 

除了webapps和这个目录下的内容,其他的文件都进行删除

 

方法如下,使用find命令

 

cd /root/apache-tomcat-9.0.75
find . -mindepth 1 ! -path "./webapps/*" ! -path "./webapps" -exec rm -rf {} +

 

 

结果,webapps目录,目录下面的东西,都有,其他的东西,都被删除掉了。

 

 

命令解释:

  • find: 查找命令。
  • .: 表示当前目录,你可以将其替换为目标目录的绝对路径。
  • -mindepth 1: 确保find不会匹配到当前目录本身,只匹配子目录和文件。
  • ! -path "./特定目录/*": 表示不匹配名为"特定目录"的目录以及其内容。!表示否定。
  • -exec: 在找到的文件/目录上执行后面的命令。
  • rm -rf {} +: 删除找到的文件/目录。{}会被find命令替换为实际的文件名/目录名。
  • +: 一次性执行尽可能多的删除操作,而不是每找到一个文件/目录就执行一次。
posted @ 2023-07-20 14:44  Zhai_David  阅读(207)  评论(0编辑  收藏  举报