Repository 32bit  Forum
Repository 64bit  Wiki

[RISOLTO] eliminare i file dell'output di un tree

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.

[RISOLTO] eliminare i file dell'output di un tree

Messaggioda Procopio » mer nov 09, 2011 14:57

Ciao a tutti!!

mi rivolgo qua per una domanda che per i più esperti di voi sarà decisamente banale, ma che non so risolvere:

come già spega il titolo, sto cercando di eliminare tutti e soli i file di un output di un tree
Codice: Seleziona tutto
    root@darkstar:/opt/xfce4/exo-0.6.0/tmp# tree -if usr/
    usr
    usr/local
    usr/local/bin
    usr/local/bin/exo-csource
    usr/local/bin/exo-desktop-item-edit
    usr/local/bin/exo-open
    usr/local/bin/exo-preferred-applications
    usr/local/etc
    usr/local/etc/xdg
    usr/local/etc/xdg/xfce4
    usr/local/etc/xdg/xfce4/helpers.rc
    usr/local/include
    usr/local/include/exo-1
    usr/local/include/exo-1/exo
    usr/local/include/exo-1/exo/exo-binding.h
    usr/local/include/exo-1/exo/exo-cell-renderer-ellipsized-text.h
    usr/local/include/exo-1/exo/exo-cell-renderer-icon.h
    usr/local/include/exo-1/exo/exo-config.h
    usr/local/include/exo-1/exo/exo-enum-types.h
    usr/local/include/exo-1/exo/exo-execute.h
    usr/local/include/exo-1/exo/exo-gdk-pixbuf-extensions.h
    usr/local/include/exo-1/exo/exo-gobject-extensions.h
    usr/local/include/exo-1/exo/exo-gtk-extensions.h
    usr/local/include/exo-1/exo/exo-icon-bar.h
    usr/local/include/exo-1/exo/exo-icon-chooser-dialog.h
    usr/local/include/exo-1/exo/exo-icon-view.h
    usr/local/include/exo-1/exo/exo-job.h
    usr/local/include/exo-1/exo/exo-simple-job.h
    usr/local/include/exo-1/exo/exo-string.h
    usr/local/include/exo-1/exo/exo-toolbars-editor-dialog.h
    usr/local/include/exo-1/exo/exo-toolbars-editor.h
    ...ecc ecc
spiego meglio il problema: ho installato xfce4.8 senza pacchettizzare, e ora per rimuoverlo non posso dare un make unistall ma devo eliminare tutti i files a mano, dal momento che la sola individuazione dei file non è facile, ho installato ogni pacchetto precompilato di xfce in una directory creata ad hoc, "tmp", nella directory del pacchetto stesso precompilato, così che da lì dentro riesco ad individuare il percorso di ogni singolo file e a eliminarlo:) se notate ad ogni singolo percorso però manca la slash di root.

Di questi elenchi da 220 linee e anche molte di più, ne ho diversi, uno per ogni pacchetto di xfce (una ventina circa) e vorrei aggiungere un "rm /" davanti ad ogni riga per andare a eliminare i file (meglio ancora sarebbe ottenere come output del tree soli files, ma ho provato con il comando tree -if -I */ in maniera che filtrasse le directories e non ci è riuscito)

un programma che avevo provato a scrivere io era questo
Codice: Seleziona tutto
#!/bin/sh
for file
usr
usr/local
usr/local/bin
usr/local/bin/exo-csource
usr/local/bin/exo-desktop-item-edit
usr/local/bin/exo-open
usr/local/bin/exo-preferred-applications
usr/local/etc
usr/local/etc/xdg
usr/local/etc/xdg/xfce4
usr/local/etc/xdg/xfce4/helpers.rc
usr/local/include
usr/local/include/exo-1
usr/local/include/exo-1/exo
usr/local/include/exo-1/exo/exo-binding.h
usr/local/include/exo-1/exo/exo-cell-renderer-ellipsized-text.h
usr/local/include/exo-1/exo/exo-cell-renderer-icon.h
...
usr/local/share/xfce4/helpers/thunderbird.desktop
usr/local/share/xfce4/helpers/urxvt.desktop
usr/local/share/xfce4/helpers/w3m.desktop
usr/local/share/xfce4/helpers/xterm.desktop ; do
 ( rm $/file )
ma ovviamente è sbagliato :)se mi poteste dare una dritta ve ne sarei molto grato :)
Ultima modifica di Procopio il mer nov 09, 2011 20:31, modificato 1 volta in totale.
Avatar utente
Procopio
Linux 2.6
Linux 2.6
 
Messaggi: 589
Iscritto il: ven lug 29, 2011 10:50
Località: Torino
Nome Cognome: Matteo Micheletto Oddino
Slackware: 14.0
Kernel: 3.2.29-smp
Desktop: KDE 4.10.5

Re: eliminare i file dell'output di un tree

Messaggioda 414N » mer nov 09, 2011 15:09

Il problema consiste nel rimuovere una directory e tutte le sue sottodirectory?
Se sì
Codice: Seleziona tutto
rm -r directory

Col flag -r, rm rimuove la directory indicata e tutti i suoi contenuti ricorsivamente.
Avatar utente
414N
Iper Master
Iper Master
 
Messaggi: 2876
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

Re: eliminare i file dell'output di un tree

Messaggioda masalapianta » mer nov 09, 2011 15:12

non conosco tree ma non va bene lo stesso find?
find /percorso -type f -exec rm {} \;
elimina ogni file (come hai chiesto, non le directory) nel percorso specificato
Avatar utente
masalapianta
Iper Master
Iper Master
 
Messaggi: 2775
Iscritto il: dom lug 24, 2005 23:00
Località: Roma
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian

Re: eliminare i file dell'output di un tree

Messaggioda Procopio » mer nov 09, 2011 15:30

@414N: eh no, il problema è esattamente l'inverso: io voglio rimuovere solo i files di xfce, ma il tree ovviamente oltre ai files mi da in output anche le directory! se tu all'elenco di files che c'è sopra metti davanti ad ogni riga una / ottieni il filesistem del mio sistema con tutti i files di xfce all'interno che io voglio eliminare!

@masalapianta: quello sembrerebbe andar bene, ma devo farlo su un elenco, non su un singolo file, quindi posso sostituire a "persorso" l'elenco completo?
Codice: Seleziona tutto
 find /
    usr/local/bin/exo-csource
    usr/local/bin/exo-desktop-item-edit
    usr/local/bin/exo-open
    usr/local/bin/exo-preferred-applications
    usr/local/etc
    usr/local/etc/xdg
    usr/local/etc/xdg/xfce4
    usr/local/etc/xdg/xfce4/helpers.rc
    usr/local/include
    usr/local/include/exo-1
    usr/local/include/exo-1/exo
    usr/local/include/exo-1/exo/exo-binding.h
    usr/local/include/exo-1/exo/exo-cell-renderer-ellipsized-text.h
    usr/local/include/exo-1/exo/exo-cell-renderer-icon.h
    usr/local/include/exo-1/exo/exo-config.h
    usr/local/include/exo-1/exo/exo-enum-types.h
    usr/local/include/exo-1/exo/exo-execute.h
    usr/local/include/exo-1/exo/exo-gdk-pixbuf-extensions.h -type f -exec rm {} \;


cioè definire magari percorso come un elenco (si dice array? :))
Avatar utente
Procopio
Linux 2.6
Linux 2.6
 
Messaggi: 589
Iscritto il: ven lug 29, 2011 10:50
Località: Torino
Nome Cognome: Matteo Micheletto Oddino
Slackware: 14.0
Kernel: 3.2.29-smp
Desktop: KDE 4.10.5

Re: eliminare i file dell'output di un tree

Messaggioda targzeta » mer nov 09, 2011 15:36

Cioé tu vuoi eliminare tutti i file ma lasciare l'abero delle directory intatto, giusto? Il consiglio di masalapianta è corretto, "percorso" è UN percorso, find esegue una ricerca ricorsiva, quindi non hai nessun bisogno di passargli tutti quei path. Prova semplicemente il comando:
Codice: Seleziona tutto
find /usr/local -type f
e vedi cosa ti da in output, se ti tira fuori tutti e soli i file che vuoi cancellare, allora dai:
Codice: Seleziona tutto
find /usr/local -type f | xargs rm
che li cancella tutti. Occhio però perché, così a prima vista, mi sembra che ci siano anche un po' di sottodirectory che dovresti eliminare. Vedi ad esempio usr/local/etc/xdg.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6108
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: eliminare i file dell'output di un tree

Messaggioda Procopio » mer nov 09, 2011 16:05

eheh no, ci siamo quasi ma non è così.....io il find lo faccio in /opt/xfce4/pacchetto/tmp/usr, qui c'è una copia del mio filesistem ma con i soli pacchetti di xfce
io voglio cancellare dal mio filesistem i pacchetti che mi vengono suggeriti in quel filesistem copia!
Avatar utente
Procopio
Linux 2.6
Linux 2.6
 
Messaggi: 589
Iscritto il: ven lug 29, 2011 10:50
Località: Torino
Nome Cognome: Matteo Micheletto Oddino
Slackware: 14.0
Kernel: 3.2.29-smp
Desktop: KDE 4.10.5

Re: eliminare i file dell'output di un tree

Messaggioda targzeta » mer nov 09, 2011 16:13

Quindi devi fare il find sul filesystem copia ma eliminare i file dal tuo filesystem originale? In pratica, per ogni file tirato fuori da find, devi eliminare il relativo file però senza il '/opt/xfce4/pacchetto/tmp' davanti? Oppure ci devi mettere /usr/local/? Fai un esempio pratico, posta il percorso del file da tuo filesystem copia e poi mostraci il relativo file dal tuo filesystem originale.

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6108
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: eliminare i file dell'output di un tree

Messaggioda 414N » mer nov 09, 2011 16:17

Cioè sfruttare l'elenco in /opt per cancellare quelli che hai installato erroneamente nel filesystem?
Fai una prova: entra nella directory contenente la directory usr (da quel che hai riportato, dovrebbe essere /opt/xfce4/pacchetto/tmp/).
Esegui il seguente comando:
Codice: Seleziona tutto
find usr -type f -exec echo /{} \;

Se vedi stampati tutti e soli i file che dovresti cancellare (col path corretto con uno slash iniziale tramite la echo), allora sostituisci la echo con un rm:
Codice: Seleziona tutto
find usr -type f -exec rm /{} \;

Ovviamente dovrai essere root perché il secondo comando sortisca l'effetto voluto.
Avatar utente
414N
Iper Master
Iper Master
 
Messaggi: 2876
Iscritto il: mer feb 13, 2008 16:19
Località: Bulagna
Slackware: 14.0 (x64)
Kernel: 3.2.29
Desktop: LXDE

Re: eliminare i file dell'output di un tree

Messaggioda hashbang » mer nov 09, 2011 16:25

Ma scusami eh...(senza polemica).
Conoscendo già il problema (visto che ne abbiamo discusso nell'altro topic) rispondo subito: non avresti fatto prima a pacchettizzare i binari installati nel file system fittizio (ovvero quella dir tmp), installare i pacchetti creati e rimuovere il tutto?
Tanto i path dei binari e delle librerie sparse per il sistema sono identici a quelli presenti nell'FS fittizio (visto che hai usato gli stessi sorgenti con la stessa configurazione). Una volta installato quei pacchetti avresti sovrascritto i file già presenti e li avresti rimossi agevolmente con removepkg.

A quest'ora avresti già finito. :roll:

Poi se vuoi usare questo metodo per scopi di apprendimento è un altro conto, ma IMHO è solo una perdita di tempo inutile.
Adoro il pragmatismo della lingua giapponese, è l'unica in cui per dire ad una ragazza che la ami le dici "suki". (cit.)
Avatar utente
hashbang
Packager
Packager
 
Messaggi: 1820
Iscritto il: ven giu 04, 2010 9:27
Località: Lecce
Nome Cognome: Luca De Pandis
Distribuzione: Windows 8.1 Pro

Re: eliminare i file dell'output di un tree

Messaggioda Procopio » mer nov 09, 2011 20:31

spina ha scritto:Quindi devi fare il find sul filesystem copia ma eliminare i file dal tuo filesystem originale? In pratica, per ogni file tirato fuori da find, devi eliminare il relativo file però senza il '/opt/xfce4/pacchetto/tmp' davanti?
esattamente :thumbright:


414N ha scritto:Cioè sfruttare l'elenco in /opt per cancellare quelli che hai installato erroneamente nel filesystem?
Fai una prova: entra nella directory contenente la directory usr (da quel che hai riportato, dovrebbe essere /opt/xfce4/pacchetto/tmp/).
Esegui il seguente comando:
Codice: Seleziona tutto
find usr -type f -exec echo /{} \;

perfetto, questo comando funziona alla perfezione, mi ha restituito tutti e soli i files che devo cancellare, e lo fà in maniera corretta! perchè se anche in realtà mi sta facendo vedere i files di /opt/xfce4/exo-0.6.0/tmp/usr/local/etc/xdg/xfce4/helpers.rc ha eliminato in out la prima parte del percorso /opt/xfce4/exo-0.6.0/tmp lasciando solo i files del filesystem che voglio eliminare!!!
Codice: Seleziona tutto
root@darkstar:/opt/xfce4/exo-0.6.0/tmp# find usr -type f -exec echo /{} \;
/usr/local/etc/xdg/xfce4/helpers.rc
/usr/local/share/man/man1/exo-csource.1
/usr/local/share/man/man1/exo-open.1
/usr/local/share/pygtk/2.0/defs/exo-0.6/exo.defs
/usr/local/share/pixmaps/exo-1/exo-thumbnail-frame.png
/usr/local/share/gtk-doc/html/exo-1/ch01.html
/usr/local/share/gtk-doc/html/exo-1/right.png
/usr/local/share/gtk-doc/html/exo-1/exo-widgets.html
/usr/local/share/gtk-doc/html/exo-1/ExoToolbarsView.html
/usr/local/share/gtk-doc/html/exo-1/ExoIconBar.html
...
quindi è perfetto! se poi sostituisco a echo rm me li rimuove! ...e per quanto riguarda questo thread posso mettere risolto! :thumbright:


atomix600 ha scritto:non avresti fatto prima a pacchettizzare i binari installati nel file system fittizio (ovvero quella dir tmp), installare i pacchetti creati e rimuovere il tutto?
Tanto i path dei binari e delle librerie sparse per il sistema sono identici a quelli presenti nell'FS fittizio (visto che hai usato gli stessi sorgenti con la stessa configurazione). Una volta installato quei pacchetti avresti sovrascritto i file già presenti e li avresti rimossi agevolmente con removepkg.
ehehe e qui arriva il punto dolente, perchè a questo punto posso eliminare tutto quanto, ma quale dei due metodi è più corretto, cioè più pulito? pacchettizzando e poi rimuovendo o eliminando ogni file con rm tramite il comando suggerito da 414N? tieni comunque conto che due di quei pacchetti non sono riuscito a installarli nel filesystem fittizzio, ma di questo è meglio parlarne nell'altro topic, quindi riporto queste due battute di là! ;)
Avatar utente
Procopio
Linux 2.6
Linux 2.6
 
Messaggi: 589
Iscritto il: ven lug 29, 2011 10:50
Località: Torino
Nome Cognome: Matteo Micheletto Oddino
Slackware: 14.0
Kernel: 3.2.29-smp
Desktop: KDE 4.10.5

Re: [RISOLTO] eliminare i file dell'output di un tree

Messaggioda targzeta » mer nov 09, 2011 20:58

Meglio installare i pacchetti e poi rimuoverli. Come ti dicevo prima, eliminando solo i file ti rimangono delle directory orfane. Mentre un pacchetto, quando lo rimuovi, rimuove tutto ciò che ha installato (file di configurazione a parte, ovviamente). Quando rimuovi il pacchetto fai solo attenzione se l'output di removepkg ti riporta qualche WARNING o qualche riga con 'not found ... skipped'

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6108
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: [RISOLTO] eliminare i file dell'output di un tree

Messaggioda Procopio » gio nov 10, 2011 0:42

ok, grazie mille spina! ;)
Avatar utente
Procopio
Linux 2.6
Linux 2.6
 
Messaggi: 589
Iscritto il: ven lug 29, 2011 10:50
Località: Torino
Nome Cognome: Matteo Micheletto Oddino
Slackware: 14.0
Kernel: 3.2.29-smp
Desktop: KDE 4.10.5


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron