Znajdź i usuń wszystkie pliki bez rozszerzeń w folderze i jego podfolderach


16

Mam folder bez około 500 podkatalogów. Jest w nim dużo śmieci i chcę je posprzątać.

Za pomocą tego polecenia usunąłem już niektóre typy plików, których nie chcę, np. Obrazy:

find . -mindepth 1 -iname "*.jpg" -type f -delete

Jednak teraz chcę usunąć wszystkie pliki bez rozszerzeń. Pliki takie jak „Lista zakupów” zamiast „Lista zakupów.txt”

Próbowałem następującego polecenia, ale nie zadziałało:

find . -mindepth 1 ! -iname "*.*" -type f -delete

Odpowiedzi:


20

Spróbuj tego:

find . -type f  ! -name "*.*"  -delete

Należy jednak pamiętać, że powyższe nie spowoduje usunięcia plików, których nazwa kończy się .na przykład na a foo.. Aby je również usunąć, użyj tego zamiast:

find . -type f  ! -name "*.?*" -delete

Drugie polecenie było moim następnym pytaniem. Dzięki wielkie! Mógłbym także wpisać, find . -type f ! -name "*?.*" -deleteaby usunąć pliki takie jak „.trash” lub cokolwiek innego, czego nie potrzebowałem. Nie martw się - to nie był mój katalog domowy, więc nie straciłem żadnych plików konfiguracyjnych.
etsnyman

5
@etsnyman Lepiej najpierw przetestować polecenie bez -deleteopcji!
Radu Rădeanu

@Etsnyman nie całkiem, aby usunąć pliki zaczynające się od kropki, użyj find . -type f -name ".*" -deletetego w swoim ostatnim komentarzu spowoduje również usunięcie plików bez rozszerzeń. I co powiedział Radu! Najpierw przetestuj!
terdon

@ RaduRădeanu Właściwie przetestowałem go najpierw w katalogu
fikcyjnym

@terdon Co oznacza znak zapytania w drugim poleceniu?
Avinash Raj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.