Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

eliminare file di backup

7 views
Skip to first unread message

one4all

unread,
May 19, 2013, 10:58:31 AM5/19/13
to
rm -rf /home/user/bin/*~

vengono eliminati solo i file di backup (*~) nella directory
/home/rino/bin, ma non quelli nelle sotto-directory.

perchᅵ?

Lem Novantotto

unread,
May 19, 2013, 1:36:22 PM5/19/13
to
one4all ha scritto:

> rm -rf /home/user/bin/*~
>
> vengono eliminati solo i file di backup (*~) nella directory
> /home/rino/bin, ma non quelli nelle sotto-directory.
>
> perchè?

Perché l'opzione -r serve a cancellare, *se* sono matchate dai pathname
forniti, *anche* intere directory col loro bravo contenuto. Non serve a
fare quel che vorresti tu.

Quindi:

a) il file /home/rino/bin/stacippa/backup~ non verrà cancellato, non
essendo matchato dall'espansione del pathname fornito, poiché * non matcha
*mai* la slash "/" nella pathname expansion;

b) la directory /home/rino/bin/sonounadir~/, se c'è, verrà cancellata con
tutto il suo contenuto.

Ascolta un buon consiglio: evita usare a muzzo rm, ché puoi fare danni
seri.
Quello che ti serve, invece, è usare find per prima rintracciare
*esattamente* quei file, e poi cancellarli. Man find, e via andare. :)
--
Bye, Lem
Ceterum censeo ISLAM esse delendum
_________________________________________________________________
Non sprecare i cicli idle della tua CPU, né quelli della tua GPU.
http://www.worldcommunitygrid.org/index.jsp
http://www.rnaworld.de/rnaworld/ http://home.edges-grid.eu/home/
http://www.gpugrid.net/

mallin.shetland

unread,
May 19, 2013, 6:12:11 PM5/19/13
to
Addì domenica 19 maggio 2013 19:36 Lem Novantotto scrisse:

> Ascolta un buon consiglio: evita usare a muzzo rm, ché puoi fare danni
> seri.
> Quello che ti serve, invece, è usare find per prima rintracciare
> *esattamente* quei file, e poi cancellarli. Man find, e via andare. :)

Se permetti aggiungo anche il consiglio di usare, se disponibile, l'azione
-delete di find imìnvece che -exec rm.

O, aggiungi gli apici quando usi l'asterisco




Addì domenica 19 maggio 2013 19:36 Lem Novantotto scrisse:

> Perché l'opzione -r serve a cancellare, *se* sono matchate dai pathname
> forniti, *anche* intere directory col loro bravo contenuto. Non serve a
> fare quel che vorresti tu.

"Matchare" è bruttissimo ed inesatto. Io suggerisco di usare "corrisponde"
.Però in questo caso il tuo errore è che l'asterisco non è una espressione
regolare ma un carattere di globbing e quindi il pathname viene _espanso_
e vengono cancellati solo quei file che risultano dall'espansione.



Addì domenica 19 maggio 2013 19:36 Lem Novantotto scrisse:

> b) la directory /home/rino/bin/sonounadir~/, se c'è, verrà cancellata con
> tutto il suo contenuto.

Io ho i miei dubbi: la directory verrà cancellata solo se vuota.

Purtroppo è troppo tardi per fare una prova e verificarlo di persona.

Lem Novantotto

unread,
May 20, 2013, 6:58:25 AM5/20/13
to
mallin.shetland ha scritto:

> Se permetti aggiungo anche il consiglio di usare, se disponibile,
> l'azione -delete di find imìnvece che -exec rm.

Sicuro, non ci piove. :)

> "Matchare" è bruttissimo ed inesatto. Io suggerisco di usare
> "corrisponde" .Però in questo caso il tuo errore è che l'asterisco non è
> una espressione regolare ma un carattere di globbing e quindi il
> pathname viene _espanso_
> e vengono cancellati solo quei file che risultano dall'espansione.

Hai ragionissima. Quando scrivevo, sapevo che mi stavo esprimendo
scorrettamente usando il termine matchare riguardo alla pathname expansion,
che citavo espressamente, ma ormai avevo scritto, e la mia pigrizia...

>> b) la directory /home/rino/bin/sonounadir~/, se c'è, verrà cancellata
>> con tutto il suo contenuto.
>
> Io ho i miei dubbi: la directory verrà cancellata solo se vuota.
>
> Purtroppo è troppo tardi per fare una prova e verificarlo di persona.

Facendo questa prova, parrebbe funzionare come scrivevo:

lem@biggy:/tmp/test$ for i in 1~ 2 3; do touch file{,~}; mkdir $i; cd $i; done; cd /tmp/test

lem@biggy:/tmp/test$ find .
.
./1~
./1~/2
./1~/2/3
./1~/2/file~
./1~/2/file
./1~/file~
./1~/file
./file~
./file

lem@biggy:/tmp/test$ rm -r *~

lem@biggy:/tmp/test$ find .
.
./file

one4all

unread,
May 20, 2013, 12:11:52 PM5/20/13
to
Il 19/05/2013 19:36, Lem Novantotto ha scritto:
> b) la directory /home/rino/bin/sonounadir~/, se c'è, verrà cancellata con
> tutto il suo contenuto.

Giusto, l'avevo già intuito ieri, ma dopo aver spento tutto; infatti è
molto pericoloso!!!

mallin.shetland

unread,
May 20, 2013, 1:14:41 PM5/20/13
to
Addì lunedì 20 maggio 2013 12:58 Lem Novantotto scrisse:

> mallin.shetland ha scritto:
> ...
>> Purtroppo è troppo tardi per fare una prova e verificarlo di persona.
>
> Facendo questa prova, parrebbe funzionare come scrivevo:
> ...

Dopo una bella dormita e letto i manuali, le opzioni ricorsive scavalcano
il default e rimuovono le directory se sono vuote(o dopo averle svuotate).
Sì, tu avevi ragione ed io avevo troppo sono ;-)

M_M

unread,
May 20, 2013, 7:59:22 PM5/20/13
to
one4all <m...@malnx159jhil.invalid> ha scritto:

> Giusto, l'avevo già intuito ieri, ma dopo aver spento tutto; infatti è
> molto pericoloso!!!

Non male cmq, IMHO, fare di rm un alias per rm -I (oppure -i)



0 new messages