linux - 删除 linux 目录中的所有文件夹和文件,除了一个文件夹和该文件夹中的所有内容

标签 linux bash shell directory

我的目录结构为:-

/usr/testing/member/
   ---> public--->folder1--->file1
           \----> file2
   ---> folder3:- contains files and folders
   ---> folder4:- contains files and folders
   ---> several files

我想保留 public 文件夹及其所有内容(其中的其他文件夹和文件),但想删除目录/usr/testing/member/下的所有其他内容。但这也意味着不会删除成员文件夹。 是否有任何 shell 脚本或命令可用于完全按照我所说的来实现此目的。

最佳答案

这是一种方法:

(cd /usr/testing/member; find . -maxdepth 1 \( ! -name . -a ! -name public \) -exec echo rm -fr {} +)

即:cd 进入/usr/testing/member,找到那里的所有文件和目录,不再往下走,并排除当前目录(“.”) ) 和任何名为“public”的文件或目录,并对找到的文件执行命令。

这将打印将被删除的内容。 验证它看起来不错,然后删除 echo

关于linux - 删除 linux 目录中的所有文件夹和文件,除了一个文件夹和该文件夹中的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47660678/

相关文章:

c++ - 如何在linux中找到分配的内存

bash - 如果没有获得任何流更新,如何停止 ffmpeg m3u8 下载?

bash - Git prepare-commit-msg 钩子(Hook)没有得到任何参数

linux - 这些 awk 命令容易受到代码注入(inject)的攻击吗?

linux - 从 .bashrc 脚本中止

python - 如何使用python编写linux shell命令?

c++ - Netbeans v7 C++ 调试器错误

linux - 无法连接到 docker 容器外部的 oracle :12. 1.0.2

php - HTAccess URL 重写影响 GET 变量

bash - sed 单引号