Existuje spousta příspěvků, kde se lidé ptají, jak smazat soubory, kromě jednoho, ale moje otázka je konkrétnější. Existuje několik složek s názvem migrations
v podsložkách aktuálního adresáře, které obsahují __init__.py
soubor a některé další. Jak odstranit všechny soubory kromě __init__.py
ve všech podsložkách s názvem migrations
z aktuální složky?
UPD:A je možné přepsat __init__.py
s prázdným souborem?
Struktura složek:
├── 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
Přijatá odpověď:
Pomocí find
:
find . -path '*/migrations/__init__.py' -exec truncate -s 0 {} + -o -path '*/migrations/*' -delete
Tím se spustí find
v aktuálním adresáři (.
) a:
- pro cokoli, co odpovídá
migrations/__init__.py
, spustítruncate
příkaz.truncate -s 0 <file>
zmenší soubor na velikost 0 (prázdný); - pokud se tato shoda nepodaří, pro vše, co odpovídá
migrations/*
, smaže jej; *
v-path
odpovídá/
na rozdíl od*
v bash.
Příklad:
$ 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
Nelze provést Shell /bin/zsh při provádění příkazu Shell ve Vi?
Jak vytvořit novou kartu, aby otevřela prázdnou stránku ve Firefoxu?