View Full Version : Eliminare file con la stessa estensione
CielitoLindux
05-05-2010, 13:00
Buona sera a tutti.
Ho l'esigenza di eliminare dei file con la stessa estensione all'interno di un HD usb.
In questo hd vi sono centinaia fra cartelle e sottocartelle + altri file sparsi e i file sono di diversi tipi. Io dovrei eliminare tutti i file jpeg e jpg all'interno di tutto l'hd.
Ora, operando cn rm dovrei entrare in ogni directory ed eliminerei solo i file all'interno della dir, moltiplicato per le tante dir... ci piglio la pensione prima d'aver finito.
C'è un modo (un solo comando) per poter eliminare tutti i file dello stesso tipo all'interno di un HD?
Grazie in anticipo.
(Fedora 12)
>|HaRRyFocKer|
05-05-2010, 13:39
Molto più semplice cercare graficamente
*.jpg
e cancellare tutto quello che esce :D
kernelex
05-05-2010, 13:53
interessante :O
bisognerebbe riuscire ad associare find a rm *.xxx
o qualcosa del genere.
CielitoLindux
05-05-2010, 14:06
Molto più semplice cercare graficamente
*.jpg
e cancellare tutto quello che esce :D
E' la prima cosa che ho fatto... ma si pianta tutto, troppi file, troppi GB, troppo tutto.
Pensavo che da terminale fosse + facile... invece...
Quindi mi dite che non è possibile???
>|HaRRyFocKer|
05-05-2010, 14:39
allora dovrebbe essere
rm `locate *.jpg`
Attenzione al `, è un apostrofo inverso, lo fai con terzo stato + apostrofo.
Edit: Se poi vuoi vedere i file che rimuovi fai:
rm -v `locate *.jpg`
>|HaRRyFocKer|
05-05-2010, 15:01
Attenzione! Così ti cancellerà TUTTI i file jpg all'interno del sistema!
FIXED:
rm -v `find /path -name *.jpg`
Così dovrebbe cancellare tutti i file jpg che stanno all'interno di path e delle sue sotto-directory.
O almeno credo :D
CielitoLindux
05-05-2010, 15:15
allora dovrebbe essere
rm `locate *.jpg`
Attenzione al `, è un apostrofo inverso, lo fai con terzo stato + apostrofo.
Edit: Se poi vuoi vedere i file che rimuovi fai:
rm -v `locate *.jpg`
Bene. Quindi per evitare di eliminare tutti i file del sistema dovrei dare il comando dopo essere entrato nell'hd esterno, giusto?
Poi per evitare di fare troppi danni pensavo invece di rimuoverli, di spostarli tutti in una directory creata sul disco del pc e poi rimuoverli dopo, così mi assicuro che effettivamente eliminerò quello che voglio.
Il comando dovrebbe diventare mv `locate *.jpg` giusto? (Da specificare il percorso e la directory dove voglio spostare il tutto).
Ps: il ` come lo faccio? Terzo stato? Cos'è? (Ora ho copiato e incollato il tuo... potrei farlo anche sul terminale...)
>|HaRRyFocKer|
05-05-2010, 15:23
Bene. Quindi per evitare di eliminare tutti i file del sistema dovrei dare il comando dopo essere entrato nell'hd esterno, giusto?
Poi per evitare di fare troppi danni pensavo invece di rimuoverli, di spostarli tutti in una directory creata sul disco del pc e poi rimuoverli dopo, così mi assicuro che effettivamente eliminerò quello che voglio.
Il comando dovrebbe diventare mv `locate *.jpg` giusto? (Da specificare il percorso e la directory dove voglio spostare il tutto).
Ps: il ` come lo faccio? Terzo stato? Cos'è? (Ora ho copiato e incollato il tuo... potrei farlo anche sul terminale...)
Bene allora:
Mettiamo che il tuo disco sia montato su /media/disco e tu li voglia spostare su /home/tuonome/temporanea.
Dovresti fare:
mv `find /media/disco -name *.jpg` /home/tuonome/temporanea
Il "terzo stato" è solitamente il "win destro", insomma il tasto con il quale fai la chiocciola o l'€ :D
CielitoLindux
05-05-2010, 15:27
Bene allora:
Mettiamo che il tuo disco sia montato su /media/disco e tu li voglia spostare su /home/tuonome/temporanea.
Dovresti fare:
mv `find /media/disco -name *.jpg` /home/tuonome/temporanea
Era proprio quello che stavo scrivendo :)
"terzo stato" è solitamente il "win destro", insomma il tasto con il quale fai la chiocciola o l'€ :D
Di solito uso AltGr per la @ e €... però su linux non ricordo con precisione... (ora sto su win).
Cmq per ora grazie, appena avrò linux sotto mano e il disco, vi farò sapere :)
Ciao.
>|HaRRyFocKer|
05-05-2010, 15:29
Di solito uso AltGr per la @ e €... però su linux non ricordo con precisione... (ora sto su win).
Cmq per ora grazie, appena avrò linux sotto mano e il disco, vi farò sapere :)
Ciao.
Eccolo quello lì :D
Sul macbook non esiste alt gr :D
CielitoLindux
08-05-2010, 13:02
[giacomob@PC-Linux ~]$ mv `find /media/Dati/UraniumBackup-79C948B4FE1B722BD0CD98638CABA1B0 -name *.jpg` /home/giacomob/Scrivania/Immaginibk
mv: invalid option -- '1'
Usare `mv --help' per ulteriori informazioni.
Sembrava che fosse partito, ma i *.jpg ci sono sempre. E nella dir di destinazione non c'è nulla.... Sono passati alcuni secondi, forse un minuto, e poi ha rilasciato quell'output. Devo studiare il comando mv....
Se ci fossero altre idee... ben vengano.
Gimli[2BV!2B]
08-05-2010, 14:31
Immagino che alcuni nomi dei file da spostare abbiano spazi o caratteri particolari in mezzo.
Propongo find con opzione exec più doppi apici per delimitare i nomi dei file:ORIGINE="/media/Dati/UraniumBackup-79C948B4FE1B722BD0CD98638CABA1B0"
DESTINA="/home/giacomob/Scrivania/Immaginibk"
find "$ORIGINE" \( -name '*.jpg' -o -name '*.jpeg' -o -name '*.JPG' \) -exec mv "{}" "$DESTINA" \;
come puoi vedere ho aggiunto qualche test aggiuntivo per l'estensione.
l'opzione exec lancia mv con argomenti nome del file trovato ( "{}" ) e destinazione ( "$DESTINA" definito precedentemente).
In sostanza, ogni volta che trova un file invoca mv con il nome del file trovato tra doppi apici.
Vedere man find per dettagli.
P.S. eventualmente prima provalo con cp.
CielitoLindux
08-05-2010, 18:37
Quindi il comando sarebbe questo?
find "$/media/Dati/UraniumBackup-79C948B4FE1B722BD0CD98638CABA1B0" \( -name '*.jpg' -o -name '*.jpeg' -o -name '*.JPG' \) -exec mv "{}" "$/home/giacomob/Scrivania/Immaginibk" \;
O devo digitare proprio come hai scritto tu?
Gimli[2BV!2B]
08-05-2010, 19:50
Ho utilizzato le variabili per evidenziare la sintassi.
O scrivi le tre righe in quell'ordine (invio dopo ogni riga, naturalmente), eventualmente modificando il valore delle variabili, oppure questo è il comando esplicitato:find "/media/Dati/UraniumBackup-79C948B4FE1B722BD0CD98638CABA1B0" \( -name '*.jpg' -o -name '*.jpeg' -o -name '*.JPG' \) -exec mv "{}" "/home/giacomob/Scrivania/Immaginibk" \;Non ci vuole il dollaro ($), quel carattere serve a richiamare le variabili.
CielitoLindux
11-05-2010, 11:28
Buongiorno. Il comando ha funzionato. Usando cp è andato tutto liscio, usando mv ad un certo punto mi ha detto che nn c'era più spazio nella dir di destinazione. Cosa impossibile perchè il disco aveva molti GB ancora prima di esaurirsi. Così ho dovuto eliminare la dir, ricrearla con lo stesso nome (ovviamente) e ridare il comando. A questo punto ha finito il tutto. Mah...
Chiancheri
11-05-2010, 11:41
Buongiorno. Il comando ha funzionato. Usando cp è andato tutto liscio, usando mv ad un certo punto mi ha detto che nn c'era più spazio nella dir di destinazione. Cosa impossibile perchè il disco aveva molti GB ancora prima di esaurirsi. Così ho dovuto eliminare la dir, ricrearla con lo stesso nome (ovviamente) e ridare il comando. A questo punto ha finito il tutto. Mah...
occhio che mv "sposta", non è che hai eliminato una parte di file!?
che si sbagli sulla dimensione del disco mi sembra difficile in ogni caso.
CielitoLindux
11-05-2010, 11:56
occhio che mv "sposta", non è che hai eliminato una parte di file!?
Eliminarli era quello che volevo :)
che si sbagli sulla dimensione del disco mi sembra difficile in ogni caso.
Già, probabilmente la dimensione della dir era più grossa di quanto pensassi... purtroppo non ho preso informazioni, in quel momento.
ragazzi se volessi eliminare da una determinata cartella tutti i file .jpg come posso fare?
CielitoLindux
19-05-2015, 17:00
ragazzi se volessi eliminare da una determinata cartella tutti i file .jpg come posso fare?
rm -rf *.jpg
rm -rf *.jpg
ottimo :D
stavo facendo rigo per rigo rm......:muro: :muro: :muro:
grazie mille ;)
mentalrey
19-05-2015, 17:46
Riassumo per chi dovesse capitare
Rimuovere determinati file all'interno della cartella in cui ci si trova
rm -f *.jpg
rimuove tutti .jpg senza chiedere il permesso file per file
Rimuovere utilizzando il cerca anche all'interno di sottocartelle
find /home/MioNome -type f -name '*.jpg' -exec rm -fv {} \;
rimuove solo i file jpg nella tua cartella home e nelle sottocartelle, forzatamente e con un log verboso
Rimuovere solo i .jpg vecchi
find /home/MioNome -type f -mtime +60 -name '*.jpg' -exec rm -fv {} \;
rimuove solo i file jpg più vecchi di 60 giorni nella tua cartella home e nelle sottocartelle, forzatamente e con un log verboso,
quest'ultimo comando, in combinazione con il crontab è spesso utile per mantenere puliti in automatico
sistemi dove vengono scritti molti file che poi non servono dopo certi periodi di tempo.
in realtà, al posto di -exec rm {} \; (considerato obsoleto da alcune distro) si potrebbe usare semplicemente -delete
mentalrey
19-05-2015, 17:53
...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.