Trova ed elimina tutti i file senza estensioni all'interno di una cartella e delle sue sottocartelle


16

Ho una cartella senza circa 500 sottodirectory. C'è un sacco di spazzatura da trovare in essa e voglio pulirla.

Ho già eliminato alcuni tipi di file che non voglio, come le immagini, con questo comando:

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

Tuttavia, ora desidero eliminare tutti i file senza estensione. File come "Lista della spesa" invece di "Lista della spesa.txt"

Ho provato il seguente comando ma non ha funzionato:

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

Risposte:


20

Prova questo:

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

Tuttavia, si noti che quanto sopra non eliminerà i file il cui nome termina in a ., ad esempio foo.. Per eliminare anche quelli, usa questo invece:

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

Il secondo comando era la mia prossima domanda. Grazie mille! Potrei anche digitare find . -type f ! -name "*?.*" -deleteper rimuovere file come ".trash" o qualunque cosa non mi serva. Non preoccuparti: non era la mia directory Home, quindi non ho perso alcun file di configurazione.
etsnyman,

5
@etsnyman Meglio testare prima il comando senza l' -deleteopzione!
Radu Rădeanu,

@etsnyman non del tutto, per rimuovere i file che iniziano con un punto, utilizzare find . -type f -name ".*" -deletequello nel tuo ultimo commento eliminerà anche i file senza estensioni. E cosa ha detto Radu! Prima prova!
Terdon,

@ RaduRădeanu L'ho provato prima su una directory fittizia con file vuoti ...
etsnyman,

@terdon Cosa significa il punto interrogativo nel tuo secondo comando?
Avinash Raj,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.