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à iltronca
comando.tronca -s 0
riduce il file alla dimensione 0 (vuoto); - in caso di mancata corrispondenza, per qualsiasi cosa corrispondente a
migrations/*
, lo cancellerà; - il
*
in-percorso
corrisponde 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