gpt4 book ai didi

Linux/shell - 从一个目录中删除所有(子)子文件夹,一个除外

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:57:25 24 4
gpt4 key购买 nike

我继承了如下所示的结构,这是多年的意大利面条代码的结果......

gallery
├── 1
│   ├── deleteme1
│   ├── deleteme2
│   ├── deleteme3
│   └── full
│   ├── file1
│   ├── file2
│   └── file3
├── 2
│   ├── deleteme1
│   ├── deleteme2
│   ├── deleteme3
│   └── full
│   ├── file1
│   ├── file2
│   └── file3
└── 3
├── deleteme1
├── deleteme2
├── deleteme3
└── full
├── file1
├── file2
└── file3

实际上,这个文件夹有数千个子文件夹。我只需要保留 ./gallery/{number}/full/* (即 full 文件夹和其中的所有文件,来自 gallery),其他所有内容不再需要,需要删除。

是否可以构造一个单行代码来处理这个问题?我已经尝试过 find/maxdepth/prune 找不到满足我需要的安排。

(更新:澄清一下,所有文件夹都包含文件 - 没有一个是空的)

最佳答案

使用 PaddyD answer 你可以先清除不需要的目录,然后再删除它们:

find . -type f -not -path "./gallery/*/full/*" -exec rm {} + && find . -type d -empty -delete

关于Linux/shell - 从一个目录中删除所有(子)子文件夹,一个除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30896587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com