Ada banyak posting di mana orang menanyakan cara menghapus file kecuali yang, tetapi pertanyaan saya lebih spesifik. Ada beberapa folder bernama migrations di sub-folder direktori saat ini, yang berisi __init__.py berkas dan lainnya. Cara menghapus semua file kecuali __init__.py di semua sub-folder bernama migrations dari folder saat ini?
UPD:Dan apakah mungkin untuk menimpa __init__.py dengan file kosong?
Struktur folder:
├── 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
Jawaban yang Diterima:
Dengan find :
find . -path '*/migrations/__init__.py' -exec truncate -s 0 {} + -o -path '*/migrations/*' -delete
Ini menjalankan find di direktori saat ini (. ), dan:
- untuk apa pun yang cocok dengan
migrations/__init__.py, itu akan menjalankantruncatememerintah.truncate -s 0 <file>memperkecil ukuran file menjadi 0 (kosong); - gagal mencocokkan, untuk apa pun yang cocok dengan
migrations/*, itu akan menghapusnya; *di-pathcocok dengan/tidak seperti*di bash.
Contoh:
$ 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
Tidak Dapat Mengeksekusi Shell /bin/zsh Saat Menjalankan Perintah Shell Di Vi?
Bagaimana Cara Membuat Tab Baru Membuka Halaman Kosong Di Firefox?