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 menjalankantruncate
memerintah.truncate -s 0 <file>
memperkecil ukuran file menjadi 0 (kosong); - gagal mencocokkan, untuk apa pun yang cocok dengan
migrations/*
, itu akan menghapusnya; *
di-path
cocok 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?