GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come eliminare tutti i file in una cartella particolare presente nelle sottocartelle della directory corrente escludendo un determinato file?

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à il tronca 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

Ubuntu
  1. Come trovare un file in Linux in tutte le directory in modo ricorsivo

  2. Come eseguire il tar (comprimere) i file, escludendo determinati file o directory

  3. Stampa tutti i file in una cartella?

  4. Come elencare le dimensioni dei file ricorsivi di file e directory in una directory?

  5. Come eliminare tutti i file tranne un file denominato da una cartella specifica?

Come estrarre file in una cartella particolare in Linux

Come eliminare tutti i file con un'estensione particolare in una cartella particolare?

Utilizzare Trova per trovare una determinata directory ed eliminare tutti i file in essa contenuti tranne una directory?

Come posso cambiare il nome di molti file in una cartella?

Come eliminare file/cartelle tramite File Manager

Come trovare tutti i file con dimensione del file zero (0) byte in una directory in modo ricorsivo