Ci sono molti post in cui le persone chiedono come eliminare i file tranne quelli, ma la mia domanda è più specifica. Esistono diverse cartelle denominate migrations nelle sottocartelle della directory corrente, che contengono __init__.py file e altro ancora. Come eliminare tutti i file tranne __init__.py in tutte le sottocartelle denominate migrations dalla cartella corrente?
UPD:Ed è possibile sovrascrivere __init__.py con file vuoto?
Struttura delle cartelle:
├── Folder_1│ ├─ Costrue │ └── __init __. Cpython-35.pyc├─ cartella_2│ ├── migrazioni│ │ ├−─ 0001_initial.py│ │ ├─ __init __. Py│ │ └─ __pycache__│ │ ├ 000─ 0001_inilial.Cpythonon -35.pyc│ │ └── __init __. Cpython-35.pyc├─ cartella_3│ ├──py.py│ ├−─ app ─ 0001_initial.py│ │ ├─ Cost __. Risposta accettata:
Con trova :
trova . -path '*/migrations/__init__.py' -exec truncate -s 0 {} + -o -path '*/migrations/*' -delete
Questo esegue trova nella directory corrente (. ), e:
- per qualsiasi cosa che corrisponda a
migrations/__init__.py, eseguirà iltroncacomando.tronca -s 0riduce il file alla dimensione 0 (vuoto); - in caso di mancata corrispondenza, per qualsiasi cosa corrispondente a
migrations/*, lo cancellerà; - il
*in-percorsocorrisponde a/a differenza del*in bash.
Esempio:
; ── __init __. Cpython-35.pyc├─ cartella_2│ └─ Costrues│ ├── 0001_initial.py│ ├─−─ __init __. Py│ └roniche ── __init__.cpython-35.pyc└── folder_3 ├── admin.py ├── apps.py ├── __init__.py └── migrazioni ├── 0001_initial.py ─ __── __── __── __pycache__ ├── 0001_initial.cpython-35.pyc └── __init__.cpython-35.pyc9 directory, 15 file$ trova . -path '*/migrations/__init__.py' -exec truncate -s 0 {} + -o -path '*/migrations/*' -delete $ tree .├── folder_1│ └── migrations│ └── __init__ .py├── folder_2│ └── migrazioni│ └── __init__.py└── folder_3 ├── admin.py ├── apps.py ├── __init__.py ─.py_6── .py py_6── directory, 6 file$ wc -l */migrations/__init__.py0 folder_1/migrations/__init__.py0 folder_2/migrations/__init__.py0 folder_3/migrations/__init__.py0 total