GNU/Linux >> Linux の 問題 >  >> Ubuntu

特定のファイルを除く現在のディレクトリサブフォルダに存在する特定のフォルダ内のすべてのファイルを削除するにはどうすればよいですか?

ファイル以外のファイルを削除する方法を尋ねる投稿はたくさんありますが、私の質問はもっと具体的です。 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

承認された回答:

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

Ubuntu
  1. 特定のファイルまたはディレクトリを除いて、ファイルをtar(圧縮)する方法

  2. フォルダ内のすべてのファイルを印刷しますか?

  3. 検索を使用して特定のディレクトリを検索し、1つのディレクトリを除くその中のすべてのファイルを削除しますか?

  1. ディレクトリ内のファイルとディレクトリの再帰的なファイルサイズを一覧表示するにはどうすればよいですか?

  2. 特定のフォルダから1つの名前付きファイルを除くすべてのファイルを削除するにはどうすればよいですか?

  3. すべてのファイルを現在のディレクトリから上位ディレクトリに移動する方法は?

  1. 現在のディレクトリ内のすべてのファイルを chown/chmod する方法は?

  2. 一部を除くディレクトリ内のすべてのファイルを削除する方法は?

  3. .fuse_hidden* ファイルを削除するには?