RISOLTO Eliminazione file e directory da elenco memorizzato

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
Avatar utente
scartozzo
Packager
Packager
Messaggi: 254
Iscritto il: mar 8 feb 2005, 0:00
Nome Cognome: Flavio Gallucci
Kernel: 3.19
Desktop: fluxbox
Distribuzione: ScarTOzzoLinux
Località: Torino

RISOLTO Eliminazione file e directory da elenco memorizzato

Messaggio da scartozzo »

Lista è un elenco:
root@babilon:/mnt/lfs/prova# more lista
/mnt/lfs/prova/prova/directory/archivio1
/mnt/lfs/prova/prova/directory/archivio2
/mnt/lfs/prova/prova/directory/archivio3
/mnt/lfs/prova/prova/cartellina
/mnt/lfs/prova/prova/directory
Con il seguente script non succede nulla.
Insomma non vengono riconosciuti link file e directory, così la script esce senza risultato.

Codice: Seleziona tutto

remove=$(cat lista)
for arg in "$remove"; do
if [[ -h "$arg" ]]; then
  find $arg -type l -print | xargs /bin/rm -vf
fi
if [[ -f "$arg" ]]; then
  find $arg -type f -print | xargs /bin/rm -vf
fi
if [[ -d "$arg" ]]; then
  find $arg -type d -print | xargs /bin/rmdir -v
fi
done
Altrimenti, eliminando le condizioni ed i test, funziona con l'inconveniente dei messaggi di ritorno di file inesistenti perchè già eliminati.

RIngrazio anticipatamente per i suggerimenti.

Avatar utente
scartozzo
Packager
Packager
Messaggi: 254
Iscritto il: mar 8 feb 2005, 0:00
Nome Cognome: Flavio Gallucci
Kernel: 3.19
Desktop: fluxbox
Distribuzione: ScarTOzzoLinux
Località: Torino

Re: RISOLTO Eliminazione file e directory da elenco memorizz

Messaggio da scartozzo »

Codice: Seleziona tutto

  for arg in $(cat $pkgfs); do
    if [[ -h "$arg" ]]; then
      find $arg -type l -print | xargs /bin/rm -vf
    elif [[ -f "$arg" ]]; then
      find $arg -type f -print | xargs /bin/rm -vf
    elif [[ -d "$arg" ]]; then
      find $arg -type d -print | xargs /bin/rmdir -v
    fi
  done
Ho risolto inserendo il comando cat all'interno del ciclo for.

E' più snello ma non capisco la differenza.

Grazie

Avatar utente
matzu
Linux 2.x
Linux 2.x
Messaggi: 217
Iscritto il: dom 20 set 2009, 2:26
Nome Cognome: Franco
Slackware: 64-13.37 13.1
Kernel: generic
Desktop: kde

Re: RISOLTO Eliminazione file e directory da elenco memorizz

Messaggio da matzu »

scartozzo ha scritto:for arg in $(cat $pkgfs); do
'pkgfs' è uguale a 'lista'?

Avatar utente
scartozzo
Packager
Packager
Messaggi: 254
Iscritto il: mar 8 feb 2005, 0:00
Nome Cognome: Flavio Gallucci
Kernel: 3.19
Desktop: fluxbox
Distribuzione: ScarTOzzoLinux
Località: Torino

Re: RISOLTO Eliminazione file e directory da elenco memorizz

Messaggio da scartozzo »

Si! Lista era per fare un esempio. pkgfs è la variabile che ho realmente utilizzato.

Grazie.

Avatar utente
scartozzo
Packager
Packager
Messaggi: 254
Iscritto il: mar 8 feb 2005, 0:00
Nome Cognome: Flavio Gallucci
Kernel: 3.19
Desktop: fluxbox
Distribuzione: ScarTOzzoLinux
Località: Torino

Re: RISOLTO Eliminazione file e directory da elenco memorizz

Messaggio da scartozzo »

Ho dedicato un pò di tempo allo studio di uno script che tiene traccia dei pacchetti installati da sorgente (ovviamente alternativo al fakeinstall).

Avatar utente
matzu
Linux 2.x
Linux 2.x
Messaggi: 217
Iscritto il: dom 20 set 2009, 2:26
Nome Cognome: Franco
Slackware: 64-13.37 13.1
Kernel: generic
Desktop: kde

Re: RISOLTO Eliminazione file e directory da elenco memorizz

Messaggio da matzu »

Se nel secondo hai usato elif, forse nel primo dovevi inserire i cicli if-fi dal secondo in poi dentro degli else. Una cosa circa così:

Codice: Seleziona tutto

if <condizione 1>
else
   if <condizione 2>
   fi
fi
(occhio che sono ignorante e vado a tentoni...)

Però per quel che m'interessa in particolare non ho capito come hai ottenuto la lista nella variabile.
Che output dà 'echo $pkgfs'?
Se 'more lista' dà l'output che hai scritto all'inizio, mi pare che dovrebbe essere che pkgfs=$(ls) o qualcosa di analogo, ma non torna.

Rispondi