Richiesta di un COMANDO per terminale

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Avatar utente
pistorius08
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 350
Iscrizione: sabato 21 aprile 2012, 11:23
Desktop: Xfce
Distribuzione: UbuntuStudio 20.04_xubuntu-20.04.02
Località: Camunia Valley

Richiesta di un COMANDO per terminale

Messaggio da pistorius08 »

Ciao a tutti ho un quesito: siccome ho circa 4/5cento di GB di musica vorrei sistemarla, avrei bisogno di un COMANDO per il terminale che scansioni la cartella dove tengo la musica e mi permetta di: prendere tutte le cartelle che contengono i file .mp3 spostandole in un’ altra cartella eliminando i file .mp3 al suo interno ma mantenendo nome e “albero” delle sopracartelle, cioè : se ad esempio la cartella che contiene i file .mp3 si chiama CD2 contenuta all’interno di MUSICA>nome artista>titolo album>CD2, il risultato finale sarà una cartella chiamata MUSICA1 con all’interno tutte sottocartelle vuote. E’ possibile? Grazie
:birra: Alegher Alegher che'l bus del cul le negher!!!!! :birra:

UbuntuStudio 20.04 64__Xubuntu-20.04.2.0 64
Avatar utente
xavier77
Gruppo Documentazione
Gruppo Documentazione
Messaggi: 8057
Iscrizione: venerdì 21 settembre 2012, 16:37
Desktop: GNOME, Xfce (e altri)
Distribuzione: X/Ubuntu 24/22/20.04 + eOS + altre
Sesso: Maschile
Contatti:

Re: Richiesta di un COMANDO per terminale

Messaggio da xavier77 »

Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 434
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: Richiesta di un COMANDO per terminale

Messaggio da Lucio C »

non capisco bene ... in termini generali si tratta di prendere un albero di directories che contengono files di un dato tipo e creare un altro albero con tutti i directory vuoti ? Non mi e' chiaro a cosa serva (se sia il primo step a cui ne servira' un altro) ... forse avevo fatto qualcosa di simile tanto tempo fa ma per un sito web a scopi statistici, non ricordo se con wget o con lynx.

I comandi "du" e "find -type d" dovrebbero listare tutti i directories sotto una radice. Una giudiziosa combinazione di find -type d e -exec mkdir potrebbe replicare l'albero. O forse un uso di rsync con delle opzioni, o un tar cv pipato in un tar xv.
Conviene crerare un albero di test (i files potrebbero essere vuoti, basta crearli con touch) e provare diversi comandi fino a che si trova la solluzine desiderata.

Ah, forse tutto il thread andrebbe spostarto in una altra sezione, non c'entra nulla con gnome, e' piu' generale.
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1906
Iscrizione: giovedì 24 dicembre 2020, 15:58

Re: Richiesta di un COMANDO per terminale

Messaggio da korda »

Per generare l'albero c'è anche tree

Questo è il comando singolo, poi per ricreare l'albero altrove...

...basta parsare l'output di esso, filtrare via le foglie e tenere i rami parent di file .mp3

Edit: ma anche, come suggerito, lanciare un rsync corredato da un file di exclude costruito ad hoc
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Avatar utente
pistorius08
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 350
Iscrizione: sabato 21 aprile 2012, 11:23
Desktop: Xfce
Distribuzione: UbuntuStudio 20.04_xubuntu-20.04.02
Località: Camunia Valley

Re: Richiesta di un COMANDO per terminale

Messaggio da pistorius08 »

@Lucio C Visto che la mia collezione è composta da mp3 e FLAC vorrei tenere solo la collezione con i FLAC, mentre per gli mp3 che vorrei eliminare, avrei una lista di album da cercare in FLAC, in piu avrei le cartelle "svuotate" dagli mp3 ma con le immagini (Front, Back, i vari disc) e le pagine di Wikipedia relative ai vari album
@korda Sono troppo ignorante per sapere/capire cosa devo fare :muro:
Grazie per il vostro interessamento :birra: :birra:
Ultima modifica di pistorius08 il martedì 29 ottobre 2024, 16:44, modificato 1 volta in totale.
:birra: Alegher Alegher che'l bus del cul le negher!!!!! :birra:

UbuntuStudio 20.04 64__Xubuntu-20.04.2.0 64
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1906
Iscrizione: giovedì 24 dicembre 2020, 15:58

Re: Richiesta di un COMANDO per terminale

Messaggio da korda »

pistorius08 ha scritto:
martedì 29 ottobre 2024, 15:34
@korda Sono troppo ignorante per sapere/capire cosa devo fare :muro:
Ok, ti illustro un esempio relativo al..
korda ha scritto:
martedì 29 ottobre 2024, 14:27
Edit: ma anche, come suggerito, lanciare un rsync corredato da un file di exclude costruito ad hoc

STEP 1 crei un file di testo chiamato, ad es., exclude.list e ci scrivi dentro qualcosa del tipo

Codice: Seleziona tutto

*.mp3

STEP 2 lanci il comando rsync con una sintassi del tipo

Codice: Seleziona tutto

rsync -vra --progress --exclude-from=exclude.list percorso_degli_mp3/ percorso_di_destinazione/

STEP 3 osservi il risultato ottenuto
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Avatar utente
pistorius08
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 350
Iscrizione: sabato 21 aprile 2012, 11:23
Desktop: Xfce
Distribuzione: UbuntuStudio 20.04_xubuntu-20.04.02
Località: Camunia Valley

Re: Richiesta di un COMANDO per terminale

Messaggio da pistorius08 »

Non ti seguo, io non voglio fare un backup, e gli mp3 non sono in una sola cartella. Un'esempio che potrebbe capitare, nella cartella Negrita ho all'interno sia album in FLAC che in mp3, ma potrebbe capitare anche in altri artisti/gruppi
Io vorrei che gli album contenenti gli mp3 vengano spostati e svuotati degli mp3 ma conservare gli altri file che sono all'interno. Mi sono spiegato?
Ultima modifica di pistorius08 il martedì 29 ottobre 2024, 19:20, modificato 1 volta in totale.
:birra: Alegher Alegher che'l bus del cul le negher!!!!! :birra:

UbuntuStudio 20.04 64__Xubuntu-20.04.2.0 64
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1906
Iscrizione: giovedì 24 dicembre 2020, 15:58

Re: Richiesta di un COMANDO per terminale

Messaggio da korda »

pistorius08 ha scritto:
martedì 29 ottobre 2024, 16:54
Non ti seguo, io non voglio fare un backup, e gli mp3 non sono in una sola cartella. Un'esempio che potrebbe capitare nella cartella Negrita ho all'interno sia album in FLAC che in mp3, ma potrebbe capitare in altri artisti/gruppi
Io vorrei che gli album contenenti gli mp3 vengano spostati e svuotati degli mp3 ma conservare gli altri file che sono all'interno. Mi sono spiegato?
Dove avrei scritto di backup* e singole cartelle**?
Hai provato almeno quanto scritto?

*: la sincronizzazione non è un backup (semicit.)
**: e se tu specificassi la cartella a monte di tutte quelle di interesse, come percorso sorgente, cosa potrà succedere?
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 434
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: Richiesta di un COMANDO per terminale

Messaggio da Lucio C »

Nessuno e' "troppo ignorante per sapere/capire cosa devo fare" ... al massimo pigro per non leggere le man page, Ma perdere anche qualche ora a leggere le man page e fare delle prove e' un investimento di tempo che vale la pena. Nessuno qui puo' trovare una soluzione "chiavi in mano" o la "pappa fatta" (detto senza offesa, con riferimento alla vecchia citazione di Mao "se gli dai un pesce mangia per un giorno, se gli insegni a pescare mangia per tutta la vita" ... con disegnino fatto da me attaccato sulla porta del system manager del mio istituto), casomai per insegnare a pescare.

E quindi ... rsync non e' una soluzione di backup (anche se puo' essere usasto a tale scopo), la soluzione di @korda duplica l'intero albero di directories, escludendo gli mp3. Col vantaggio addizionale che preserva i timestamp dei file (adata di creazione modifica ecc.)

Se ... il senso invece e' di cancellare tutti gli mp3 (che ho imparato solo l'altro giorno cosa sono) e tenere i flac (che tuttora ignoro cosa siano, per me un computer serve a fare calcoli e di musica non capisco proprio nulla) e anche tutti gli altri file, non vedo perche' duplicare l'albero, basta fare un delete ricorsivo, p.es. con find

Codice: Seleziona tutto

find /direttorio/di/testa -name '*.mp3' -exec echo rm -v {} \;
(credo che invece di -exec rm .... si possa usare -delete ma non mi sono mai arrischiato. Nota che ho scritto -exec echo rm ... per fare un dry run o giro di prova ... ti dice tutti i comandi di cancellazione ma non li esegue. Se la lista e' corretta, ripeti levando "echo". Oppure potresti usare rm -i e ti chiede il permesso prima di cancellare il file ... se sono 4 o 5 comodo, se sono 1000 decisamente scomodo
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
rai
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2890
Iscrizione: domenica 11 maggio 2008, 18:03
Desktop: plasma
Distribuzione: 22.04
Località: Palermo

Re: Richiesta di un COMANDO per terminale

Messaggio da rai »

Buonasera gente.
@pistorius08 Credo che ci sia un problema di comunicazione.Vediamo se ho capito giusto:
· Da un albero di cartelle che ha la sua radice nella cartella MUSICA vuoi spostare in una cartella MUSICA1 solo i rami che (in qualunque livello) contengano file.mp3
· Tutti gli altri rami sono da lasciare dove stanno.
· Il nuovo albero in MUSICA1 non deve contenere i file.mp3
Se quello che ho capito è esatto, l'approccio con rsync --exclude è comodo però bisogna usare il flag -R per fargli ricreare tutte le cartelle; inoltre bisogna prima selezionare solo le cartelle contenenti .mp3 da dare in pasto a rsync

Prova questi due comandi. Niente timore, non cancellano niente quindi è tutto facilmente reversibile. Inoltre dovrebbero funzionare anche nel malaugurato caso di nomi cartelle contenenti spazi

Codice: Seleziona tutto

cd /PATH/ALLA/DIR/MUSICA
while read -d '' path; do rsync --exclude=*.mp3 -Ra "$(dirname "$path")" /PATH/ALLA/DIR/MUSICA1/; done < <(find -iname "*.mp3" -print0)
Avviso: il comando dirname elimina la componente finale del path, che sia un file o una cartella: il risultato è che se hai cartelle vuote tra le foglie dell'albero non saranno copiate
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1906
Iscrizione: giovedì 24 dicembre 2020, 15:58

Re: Richiesta di un COMANDO per terminale

Messaggio da korda »

rai ha scritto:
martedì 29 ottobre 2024, 18:47
Buonasera gente.
@pistorius08 Credo che ci sia un problema di comunicazione.Vediamo se ho capito giusto:
· Da un albero di cartelle che ha la sua radice nella cartella MUSICA vuoi spostare in una cartella MUSICA1 solo i rami che (in qualunque livello) contengano file.mp3
· Tutti gli altri rami sono da lasciare dove stanno.
· Il nuovo albero in MUSICA1 non deve contenere i file.mp3
Se quello che ho capito è esatto, l'approccio con rsync --exclude è comodo però bisogna usare il flag -R per fargli ricreare tutte le cartelle; inoltre bisogna prima selezionare solo le cartelle contenenti .mp3 da dare in pasto a rsync

Prova questi due comandi. Niente timore, non cancellano niente quindi è tutto facilmente reversibile. Inoltre dovrebbero funzionare anche nel malaugurato caso di nomi cartelle contenenti spazi

Codice: Seleziona tutto

cd /PATH/ALLA/DIR/MUSICA
while read -d '' path; do rsync --exclude=*.mp3 -Ra "$(dirname "$path")" /PATH/ALLA/DIR/MUSICA1/; done < <(find -iname "*.mp3" -print0)
Avviso: il comando dirname elimina la componente finale del path, che sia un file o una cartella: il risultato è che se hai cartelle vuote tra le foglie dell'albero non saranno copiate
Nota per l'op...

Viene suggerito -R di relative invece di -r di recursive in quanto adeguato alla serie di comandi che ha proposto.

Nel comando rsync secco che ho postato, genera comunque tutta l'alberatura a valle. Per il resto, scelta di cartelle etc., sarebbe da arricchire a gusto dell'op il file exclude.list che menzionavo a titolo di esempio
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1906
Iscrizione: giovedì 24 dicembre 2020, 15:58

Re: Richiesta di un COMANDO per terminale

Messaggio da korda »

Lucio C ha scritto:
martedì 29 ottobre 2024, 13:34
Ah, forse tutto il thread andrebbe spostarto in una altra sezione, non c'entra nulla con gnome, e' piu' generale.
Condivido in pieno, mi autosegnalo in merito
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Avatar utente
pistorius08
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 350
Iscrizione: sabato 21 aprile 2012, 11:23
Desktop: Xfce
Distribuzione: UbuntuStudio 20.04_xubuntu-20.04.02
Località: Camunia Valley

Re: Richiesta di un COMANDO per terminale

Messaggio da pistorius08 »

rai ha scritto:
martedì 29 ottobre 2024, 18:47
Buonasera gente.
@pistorius08 Credo che ci sia un problema di comunicazione.
Esatto perciò posso considerare CHIUSA la discussione, un'immenso GRAZIE per il tempo che mi avete dedicato
:birra: Alegher Alegher che'l bus del cul le negher!!!!! :birra:

UbuntuStudio 20.04 64__Xubuntu-20.04.2.0 64
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 1 ospite