Script Find and Delete file [RISOLTO]

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Unicondor
Linux 1.x
Linux 1.x
Messaggi: 147
Iscritto il: mar 30 nov 2004, 0:00
Slackware: 13.1
Kernel: 2.6.37.6
Località: Potenza
Contatta:

Script Find and Delete file [RISOLTO]

Messaggio da Unicondor »

Salve ragazzi, vi espongo il mio problema...
Ho una directory con molte sottodirecotry..ed in qualche di queste sottodirectory ci sono dei file .class che voglio eliminare (è un workspace Java)

Vorrei scrivere uno script (bash-python) che mi cercasse tutti i file .class in tutte le directory e sotto directory di una data radice e me le cancellasse in automatico..

Ho trovato qualcosa del genere girovagando sul web pero' mi elimina i file solo specificando ogni volta la directory

Codice: Seleziona tutto

#!/bin/bash

find /path/arch -iname *.class  -exec rm {} \;
Vi ringrazio in anticipo...
Ultima modifica di Unicondor il mer 25 giu 2008, 14:56, modificato 1 volta in totale.

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2924
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: Script Find and Delete file

Messaggio da 414N »

Devi proteggere l'asterisco (*) dalla "shell expansion" tramite gli apici singoli (' '), in questo modo:

Codice: Seleziona tutto

find /path/arch -iname '*.class'  -exec rm {} \;
Ho provato il comando nel mio workspace di Eclipse mettendo al posto di rm una echo e mi stampa tutti i file .class contenuti nell'albero delle subdirectories di ~/workspace.

Avatar utente
tigerwalk
Linux 3.x
Linux 3.x
Messaggi: 895
Iscritto il: lun 25 feb 2008, 22:08
Nome Cognome: Giuliano della Vecchia
Slackware: 13.37-14.2
Kernel: 3.10.17-tiger / 4.4.88-smp
Desktop: kde4/xfce4
Località: Napoli

Re: Script Find and Delete file

Messaggio da tigerwalk »

Credo debba essere aggiunta una opzione al comando find (man find) ma non sono esperto in script....

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Script Find and Delete file

Messaggio da conraid »

Senza fare script bash (è un comando solo perché metterlo in uno script?) prova a lanciare da linea di comando

Codice: Seleziona tutto

$ find . -iname "*.class" 
E vedrai che ti lista tutti i class partendo dalla directory di dove hai lanciato lo script

Quindi ti posizioni nella directory dove hai molte sottodir e lanci

Codice: Seleziona tutto

$ find . -iname "*.class"  -exec rm {} \;
Attento ad essere nella dir giusta, altrimenti ti cancella di class di altre directory

Unicondor
Linux 1.x
Linux 1.x
Messaggi: 147
Iscritto il: mar 30 nov 2004, 0:00
Slackware: 13.1
Kernel: 2.6.37.6
Località: Potenza
Contatta:

Re: Script Find and Delete file

Messaggio da Unicondor »

Grazie a tutti..il problema erano proprio gli apici da inserire all'interno del codice per questo non voleva funzionare...
Grazie ancora..

Avatar utente
anycolouryoulike
Packager
Packager
Messaggi: 1158
Iscritto il: ven 10 ago 2007, 0:00
Slackware: 12.2
Kernel: 2.6.34.8
Desktop: KDE 3.5.10

Re: Script Find and Delete file [RISOLTO]

Messaggio da anycolouryoulike »

Con la Bash funziona anche senza apici veramente.
Per caso usi Zsh?

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Script Find and Delete file [RISOLTO]

Messaggio da conraid »

anycolouryoulike ha scritto:Con la Bash funziona anche senza apici veramente.
Per caso usi Zsh?
In quel caso forse sì, ma hanno comportamenti diversi se usati con o senza virgolette.
Per esempio

Codice: Seleziona tutto

$ ls
pippo.txt  ppluto.txt
$ find . -name pippo
$ find . -name pippo*
./pippo.txt
a$ find . -name "pippo*"
./pippo.txt
$ find . -name "*txt"
./ppluto.txt
./pippo.txt
$ find . -name *txt
find: i percorsi devono precedere l'espressione
Uso: find [-H] [-L] [-P] [percorso...] [espressione]

Tanto che nel man consigliano

Codice: Seleziona tutto

Don't forget to enclose the pattern in quotes in order to protect it from expansion by the shell.

Avatar utente
anycolouryoulike
Packager
Packager
Messaggi: 1158
Iscritto il: ven 10 ago 2007, 0:00
Slackware: 12.2
Kernel: 2.6.34.8
Desktop: KDE 3.5.10

Re: Script Find and Delete file [RISOLTO]

Messaggio da anycolouryoulike »

Vero, perché sono nella directory corrente e Bash espande la variabile, mentra Zsh no:

Codice: Seleziona tutto

root@darkstar:~$ ls
loadlin16c.txt  loadlin16c.zip
root@darkstar:~$ PROVA=*.txt
root@darkstar:~$ echo $PROVA
*.txt
root@darkstar:~$ bash
root@darkstar:~# PROVA=*.txt
root@darkstar:~# echo $PROVA
loadlin16c.txt
In questo modo find non riesce a distinguere il percorso dall'espressione!

Rispondi