Repository 32bit  Forum
Repository 64bit  Wiki

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.

Script Find and Delete file [RISOLTO]

Messaggioda Unicondor » lun giu 23, 2008 9:12

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 giu 25, 2008 13:56, modificato 1 volta in totale.
Unicondor
Linux 2.0
Linux 2.0
 
Messaggi: 147
Iscritto il: mar nov 30, 2004 0:00
Località: Potenza
Slackware: 13.1
Kernel: 2.6.37.6

Re: Script Find and Delete file

Messaggioda 414N » lun giu 23, 2008 10:50

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
414N
Iper Master
Iper Master
 
Messaggi: 2882
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

Re: Script Find and Delete file

Messaggioda tigerwalk » lun giu 23, 2008 10:51

Credo debba essere aggiunta una opzione al comando find (man find) ma non sono esperto in script....
Avatar utente
tigerwalk
Linux 2.6
Linux 2.6
 
Messaggi: 870
Iscritto il: lun feb 25, 2008 22:08
Località: Napoli
Nome Cognome: Giuliano della Vecchia
Slackware: 13.1
Kernel: 2.6.33.4-tiger
Desktop: kde4/fluxbox

Re: Script Find and Delete file

Messaggioda conraid » lun giu 23, 2008 11:11

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
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12022
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Script Find and Delete file

Messaggioda Unicondor » mer giu 25, 2008 13:55

Grazie a tutti..il problema erano proprio gli apici da inserire all'interno del codice per questo non voleva funzionare...
Grazie ancora..
Unicondor
Linux 2.0
Linux 2.0
 
Messaggi: 147
Iscritto il: mar nov 30, 2004 0:00
Località: Potenza
Slackware: 13.1
Kernel: 2.6.37.6

Re: Script Find and Delete file [RISOLTO]

Messaggioda anycolouryoulike » mer giu 25, 2008 14:13

Con la Bash funziona anche senza apici veramente.
Per caso usi Zsh?
Avatar utente
anycolouryoulike
Packager
Packager
 
Messaggi: 1158
Iscritto il: gio ago 09, 2007 23:00
Slackware: 12.2
Kernel: 2.6.34.8
Desktop: KDE 3.5.10

Re: Script Find and Delete file [RISOLTO]

Messaggioda conraid » mer giu 25, 2008 14:26

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
conraid
Staff
Staff
 
Messaggi: 12022
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: Script Find and Delete file [RISOLTO]

Messaggioda anycolouryoulike » mer giu 25, 2008 20:09

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!
Avatar utente
anycolouryoulike
Packager
Packager
 
Messaggi: 1158
Iscritto il: gio ago 09, 2007 23:00
Slackware: 12.2
Kernel: 2.6.34.8
Desktop: KDE 3.5.10


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron