如何删除当前目录子文件夹中存在的特定文件夹中的所有文件(不包括某些文件)?

米哈伊尔·帕夫洛夫(Mikhail Pavlov)

在很多帖子中,人们问如何删除文件之外的文件,但是我的问题更具体。migrations当前目录的子文件夹中有几个文件夹,其中包含__init__.py文件等。如何删除除当前文件__init__.py夹命名的所有子文件夹以外的所有migrations文件?

UPD:是否可以__init__.py用空文件覆盖

资料夹结构:

├── folder_1
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── __init__.py
│   │   └── __pycache__
│   │       ├── 0001_initial.cpython-35.pyc
│   │       └── __init__.cpython-35.pyc
├── folder_2
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── __init__.py
│   │   └── __pycache__
│   │       ├── 0001_initial.cpython-35.pyc
│   │       └── __init__.cpython-35.pyc
├── folder_3
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── __init__.py
│   │   └── __pycache__
│   │       ├── 0001_initial.cpython-35.pyc
│   │       └── __init__.cpython-35.pyc
muru

find

find . -path '*/migrations/__init__.py' -exec truncate -s 0 {} + -o -path '*/migrations/*' -delete

find在当前目录(.)中运行,并且:

  • 对于任何匹配的内容migrations/__init__.py,它将运行truncate命令。truncate -s 0 <file>将文件减小为0(空);
  • 匹配失败,对于任何匹配migrations/*,它将删除它;
  • *-path比赛/不像*在bash。

例子:

$ tree                                                                                                                                   
.
├── folder_1
│   └── migrations
│       ├── 0001_initial.py
│       ├── __init__.py
│       └── __pycache__
│           ├── 0001_initial.cpython-35.pyc
│           └── __init__.cpython-35.pyc
├── folder_2
│   └── migrations
│       ├── 0001_initial.py
│       ├── __init__.py
│       └── __pycache__
│           ├── 0001_initial.cpython-35.pyc
│           └── __init__.cpython-35.pyc
└── folder_3
    ├── admin.py
    ├── apps.py
    ├── __init__.py
    └── migrations
        ├── 0001_initial.py
        ├── __init__.py
        └── __pycache__
            ├── 0001_initial.cpython-35.pyc
            └── __init__.cpython-35.pyc

9 directories, 15 files
$ find . -path '*/migrations/__init__.py' -exec truncate -s 0 {} + -o -path '*/migrations/*' -delete                
$ tree                                                                                              
.
├── folder_1
│   └── migrations
│       └── __init__.py
├── folder_2
│   └── migrations
│       └── __init__.py
└── folder_3
    ├── admin.py
    ├── apps.py
    ├── __init__.py
    └── migrations
        └── __init__.py

6 directories, 6 files

$ wc -l */migrations/__init__.py
0 folder_1/migrations/__init__.py
0 folder_2/migrations/__init__.py
0 folder_3/migrations/__init__.py
0 total

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何计算文件夹,其子文件夹和all中的所有文件。该计数不应包括文件夹计数

删除所有子文件夹和文件,但父文件夹中的特定扩展名除外

.gitignore如何排除特定文件夹的所有直接文件,但包括该文件夹的所有子文件夹?

如何最好地删除文件夹及其子文件夹中的所有文件

如何在ckfinder中显示所有文件夹,子文件夹和文件

删除文件夹及其子文件夹中的所有文件

如何删除文件夹XXX中的所有文件

如何使用PowerShell从文件夹和所有子文件夹中删除所有访问规则?

删除文件夹中除具有特定名称的文件夹外的所有文件夹

Windows批处理-在子目录中查找所有pdf,不包括特定的文件夹名称

如何删除除父文件夹下的某些特定文件夹以外的所有文件

如何删除文件夹中除最新X子文件夹以外的所有子文件夹?

如何删除目录中没有特定文件夹及其内容的所有内容

如何从目录和子文件夹中删除所有名为“ Sample”的文件夹?

如何从文件夹中删除所有文件?

如何删除当前目录中的所有文件,但将文件保留在子文件夹中

删除子文件夹中的所有内容

在父目录中包括文件夹

使用.bat文件或dos命令提取目录(包括子文件夹)中的所有Zip

删除所有子文件夹中的`target`文件夹

如何将当前文件夹中的所有文件移动到子文件夹?

如何删除除某些特定文件(目录中的许多文件夹)以外的所有文件?通过 bash 脚本

如何删除文件夹中的所有目录

Copy-Item 不包括 PowerShell 中源目录的子文件夹文件

删除文件夹和子文件夹中的某些文件类型和空文件夹

(批量)如何递归删除目录中除以.开头的文件/文件夹之外的所有文件/文件夹?

如何删除文件名中包含特定字符串的文件夹和所有子文件夹中的文件?

递归删除所有文件和文件夹,但不包括一个文件夹

如何遍历目录中的所有子文件夹,并删除具有特定文件名的文件