Newsgroup: it.comp.os.linux.sys
Titolo: rm "file scritti in file"

Salve!
Considerando di avere un file in cui la prima riga è un commento e poi
nelle righe successive vi sono dei percorsi di file...
come posso fare, in uno script, per cancellare tutti i file il cui
percorso è indicato in questo file??
grazie
Ciao!!

 indicato in questo file??
Io ci provo (Non testato, quindi ...):
1) Cancelli la prima riga :-)
2) rm `cat file.txt`
Troppo facile ? Hmmm ... :)
-- 
                                                                     __
 __                                                              _  ///
| _        Student in Computer Science, Swiss Federal Institute  \\///
|__|iambo      of Technology - mailto:
ggia...@iiic.ethz.ch
       \X/

 percorso è indicato in questo file??
$ rm `cat file.txt`
Oppure:
$ cat file.txt | xargs rm
-- 
Cinereview: Magnolia; aveva anche delle buone idee, ma e`    _/Davide\_
*troooppo* lungo.  Voto: 5                                   \Alberani/

 percorso è indicato in questo file?
awk '/^[^#]/ {system(rm $0)}' nomefileelenco
Mi raccomando: controlla prima l'elenco dei file e non eseguirlo mai come
root!! (non si sa mai ^_^)
-- 
Bai bii,
Gianluca.
"Who knows where the road may lead us, only a fool would say"

 Troppo facile ? Hmmm ... :)
Beh può anche fare un bel
rm -i `cat fileditesto | grep ^[^#]`
(l'i perché è sempre meglio fare 'ste cose "automatizzate"
con una certa cautela).

 $ cat file.txt | xargs rm
Sorry, non avevo colto della prima riga...
Prova uno script tipo:
lung=`cat pino | wc -l`
lung=`expr $lung - 1`
rm `tail -$lung pino`


percorso è indicato in questo file??
Con un editor sostituisci ogni inizio riga, dalla seconda in
poi, con "rm ", rendi il file eseguibile e lo esegui.
-- 
Bye by Red  |  BHP on a FreeBSD box                    E-mail: 
p...@mclink.it
            |---------------------------------------------------------------
            |  "Cause I burned with love and in return
            |   I found it doesn't hurt to burn"   (Thin White Rope)

percorso è indicato in questo file??
rm -f $( grep -v "^#\|^\$" $TUOFILE )
Mi sembra una cosa pericolosissima, comunque. Prima fai una prova con:
ls $( grep -v "^#\|^\$" $TUOFILE )
e accertati che tutti i files elencati siano da cancellare... e non ci
sia roba tipo "/etc/passwd", "/", "/tmp" o che altro.
Leonardo
".signature": bad command or file name

 allora meglio utilizzare tar?
Mi scuso se lo script non è elegante manco per un cribbio,
l'ho buttato giù in quattro e quattr'otto. Però dovrebbe
funzionare a dovere:
#!/bin/bash
for file in `grep -v "^#" listafiles`; do
    NUMERO=1
    COPIA=$HOME/backups/`basename $file`
    ALTRA=$HOME/backups/`basename $file`.bak$NUMERO
    if [ -f $file ] ; then
         if [ -f $COPIA ] ; then
             while [ -f $ALTRA ]
             do
                 NUMERO=`expr $NUMERO + 1`
                 ALTRA=$HOME/backups/`basename $file`.bak$NUMERO
             done
             cp $file $ALTRA
         else
             cp $file $COPIA
         fi
    fi
done
PS: ho utilizzato cp invece di mv perché mi sembra ben
più sicuro.

allora meglio utilizzare tar?
utilizzare tar e' sicuramente meglio, cmq lo puoi fare anche senza
utilizzarlo, ti crei uno script che verifica se il nome e' esistente
nella destinazione e solo in tal caso lo fai rinominare
automaticamente
bye
-- 
       ##  louisiana kid  ##
   ## slackware 7 user ##


Come lo script che gli ho postato (che infatti funziona).

 wrote in message 38DBE7B3...@tin.it...
veloce veloce, supponendo che il file lista contenga solo dei pathnames
di files, questa riga li piazza nella directory backup con l'underscore
al posto degli slash, cosi' da risolvere il problema dei files con nomi
uguali in directory diverse (sempre che io abbia capito bene il problema ;-)
cat lista | while read nf; do mv $nf backup/`echo $nf | sed 's/\//_/'`; done
Ciao
Simone

 cat lista | while read nf; do mv $nf backup/`echo $nf | sed 's/\//_/'`; done
... | sed 's/\//_/g'`...
                  ^
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)

 poi, con "rm ", rendi il file eseguibile e lo esegui.
$ sed -n '2,$s/^/rm /p' lista_file | /bin/bash


                  ^
Ehmm... Chiedo scusa ;-)
Ciao
Simone
