[Risolto] Rinominare directory e primo file all’interno della stessa
[Risolto] Rinominare directory e primo file all’interno della stessa
Salve,
Ho molte cartelle contenenti 1 file .jpg e circa 15/30 files musicali (tutti in formato wav) la maggior parte sono accordi o piccoli brani da me composti.
Li sto catalogando ed ordinando.
Premetto che i nomi dei files sono senza significato tipo abc.wav; 01012021.wav ecc.
Vorrei fare uno script che per tutte le cartelle vada a leggere il nome del file immagine all’interno di ogni singola cartella usandolo per rinominare il primo file .wav e la directory.
Faccio un esempio
Attuale:
./001
001.wav
123.wav
01022021.wa
Gioia.jpg
…..
con lo script diventerà:
./Gioia
Gioia.wav
123.wav
01022021.wa
Gioia.jpg
……
Potete aiutarmi?
Grazie
Ho molte cartelle contenenti 1 file .jpg e circa 15/30 files musicali (tutti in formato wav) la maggior parte sono accordi o piccoli brani da me composti.
Li sto catalogando ed ordinando.
Premetto che i nomi dei files sono senza significato tipo abc.wav; 01012021.wav ecc.
Vorrei fare uno script che per tutte le cartelle vada a leggere il nome del file immagine all’interno di ogni singola cartella usandolo per rinominare il primo file .wav e la directory.
Faccio un esempio
Attuale:
./001
001.wav
123.wav
01022021.wa
Gioia.jpg
…..
con lo script diventerà:
./Gioia
Gioia.wav
123.wav
01022021.wa
Gioia.jpg
……
Potete aiutarmi?
Grazie
Ultima modifica di LuisGis il domenica 28 marzo 2021, 6:30, modificato 3 volte in totale.
- vaeVictis
- Imperturbabile Insigne
- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: Rinominare directory e primo file all’interno della stessa
Le immagini sono tutte in jpg?
Come lo individui il primo file della directory? Ha una logica il nome dato?
Come lo individui il primo file della directory? Ha una logica il nome dato?
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Re: Rinominare directory e primo file all’interno della stessa
Si, le immagini sono tutte in jpg
Il primo file, ovvero può essere un qualsiasi file.
non c'è nessuna logica su tutti i nomi dei files all'interno della cartella.
Il primo file, ovvero può essere un qualsiasi file.
non c'è nessuna logica su tutti i nomi dei files all'interno della cartella.
- UbuNuovo
- Imperturbabile Insigne
- Messaggi: 4445
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Rinominare directory e primo file all’interno della stessa
Per rinominare le directory non ci sono problemi, per i file invece c'è il problema dell'ordinamento.
Il file manager ordina in modo diverso rispetto al terminale, mi ero appuntato il sort da usare, ma ora devo andare via, dopo cena lo cerco.
Per le directory basta una cosa del genere:
Questo simula soltanto la rinomina, c'è un echo prima di mv.
@Vae: Ho usato pure Bash al posto dei miei soliti grep -P, mi sto sforzando ma è molto meno pratico.
Il file manager ordina in modo diverso rispetto al terminale, mi ero appuntato il sort da usare, ma ora devo andare via, dopo cena lo cerco.
Per le directory basta una cosa del genere:
Codice: Seleziona tutto
#!/bin/bash
dir_file='./musica/'
while read f;do
dir_all=${f%/*} # "./musica/001"
dir_base=${dir_all%/*} # "./musica"
dir_fine=${dir_all##*/} # "001"
nome_ext=${f##*/} # "Gioia.jpg"
nome=${nome_ext%.*} # "Gioia"
echo mv "$dir_all" "$dir_base/$nome"
done < <(find "$dir_file" -type f -iname '*.jpg')
@Vae: Ho usato pure Bash al posto dei miei soliti grep -P, mi sto sforzando ma è molto meno pratico.
Salva l'Ucraina!
Re: Rinominare directory e primo file all’interno della stessa
OK, grazie
Poi provo lo script
Poi provo lo script
- vaeVictis
- Imperturbabile Insigne
- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: Rinominare directory e primo file all’interno della stessa
Temo dipenda anche dalle impostazioni scelte dall'utenteIl file manager ordina in modo diverso
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
- UbuNuovo
- Imperturbabile Insigne
- Messaggi: 4445
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Rinominare directory e primo file all’interno della stessa
Naturalmente ordinati per nome.
Non lo trovo!
Provate creare una directory, aprirci un terminale ed eseguire:
caja è il mio file manager,( mettete il vostro), che con ordinamento per nome mostra i file nella sequenza:
1_pio.txt, 001_pio.txt, 2_pio, 002_pio.txt, ....
Eseguendo ottengo:
Avevo trovato il modo per avere lo stesso ordinamento, non era complicato, ma per oggi sono abbastanza fuso, mi fermo qua.
Non lo trovo!
Provate creare una directory, aprirci un terminale ed eseguire:
Codice: Seleziona tutto
mkdir test
cd test
touch {1..20}_pio.txt
touch {001..020}_pio.txt
cd ..
ls test
ls -1v test
find test -type f | sort -n
find test -type f | sort -V
caja test
1_pio.txt, 001_pio.txt, 2_pio, 002_pio.txt, ....
Eseguendo ottengo:
Codice: Seleziona tutto
8-) mkdir test
8-) cd test
8-) touch {1..20}_pio.txt
8-) touch {001..020}_pio.txt
8-) cd ..
8-) ls test
001_pio.txt 008_pio.txt 015_pio.txt 11_pio.txt 18_pio.txt 5_pio.txt
002_pio.txt 009_pio.txt 016_pio.txt 12_pio.txt 19_pio.txt 6_pio.txt
003_pio.txt 010_pio.txt 017_pio.txt 13_pio.txt 1_pio.txt 7_pio.txt
004_pio.txt 011_pio.txt 018_pio.txt 14_pio.txt 20_pio.txt 8_pio.txt
005_pio.txt 012_pio.txt 019_pio.txt 15_pio.txt 2_pio.txt 9_pio.txt
006_pio.txt 013_pio.txt 020_pio.txt 16_pio.txt 3_pio.txt
007_pio.txt 014_pio.txt 10_pio.txt 17_pio.txt 4_pio.txt
8-) ls -1v test
001_pio.txt
1_pio.txt
002_pio.txt
2_pio.txt
003_pio.txt
...
8-) find test -type f | sort -n
test/001_pio.txt
test/002_pio.txt
test/003_pio.txt
...
8-) find test -type f | sort -V
test/001_pio.txt
test/1_pio.txt
test/002_pio.txt
...
Salva l'Ucraina!
- UbuNuovo
- Imperturbabile Insigne
- Messaggi: 4445
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Rinominare directory e primo file all’interno della stessa
@LuisGis: hai fatto la prova del post sopra?
Ho diversi file manager, di quelli che ho provato (Caja, Nautilus, Thunar, Nemo, Dolphin), l'ordinamento per nome è "corretto" solo con Dolphin.
Non ho trovato il modo di ordinare in modo simil file manager; il più simile è sort-g ma non è uguale.
Concludendo se non hai Dolphin si deve trovare un altro modo per individuare il primo file.
Per esempio se il primo file in elenco è anche il primo file creato/modificato si può sfruttare quella caratteristica.
Ho diversi file manager, di quelli che ho provato (Caja, Nautilus, Thunar, Nemo, Dolphin), l'ordinamento per nome è "corretto" solo con Dolphin.
Non ho trovato il modo di ordinare in modo simil file manager; il più simile è sort-g ma non è uguale.
Concludendo se non hai Dolphin si deve trovare un altro modo per individuare il primo file.
Per esempio se il primo file in elenco è anche il primo file creato/modificato si può sfruttare quella caratteristica.
Salva l'Ucraina!
Re: Rinominare directory e primo file all’interno della stessa
Non ho Dolphin.
Nel pomeriggio controllo se il primo file modificato o creato corrisponde al primo file dell'elenco.
Però, non ho capito una cosa:
non è possibile leggere il nome di un file qualsiasi ed usarlo come file da modificare?
Nel pomeriggio controllo se il primo file modificato o creato corrisponde al primo file dell'elenco.
Però, non ho capito una cosa:
non è possibile leggere il nome di un file qualsiasi ed usarlo come file da modificare?
- UbuNuovo
- Imperturbabile Insigne
- Messaggi: 4445
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Rinominare directory e primo file all’interno della stessa
Ora non ho capito io cosa vuoi dire.
edit:
Mi è venuto un dubbio.
Devi rinominare il primo file, oppure uno qualunque e poi farlo visualizzare come primo file nel file manager?
In questo caso si dovrebbe mettere un prefisso tipo 0_, quindi rinominare un file in 0_Gioia.wav.
Salva l'Ucraina!
Re: Rinominare directory e primo file all’interno della stessa
Devo rinominare un file qualsiasi e non deve essere visualizzato come primo file nel file manager.
l'importante che per ogni subdirectory presente lo script rinomini sia la subdirectory che un qualsiasi file.wav con lo stesso nome del file.jpg presente nell'interno della stessa.
l'importante che per ogni subdirectory presente lo script rinomini sia la subdirectory che un qualsiasi file.wav con lo stesso nome del file.jpg presente nell'interno della stessa.
- UbuNuovo
- Imperturbabile Insigne
- Messaggi: 4445
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Rinominare directory e primo file all’interno della stessa
Non è quello che avevi detto all'inizio!LuisGis ha scritto: ↑sabato 27 marzo 2021, 12:55Devo rinominare un file qualsiasi e non deve essere visualizzato come primo file nel file manager.
l'importante che per ogni subdirectory presente lo script rinomini sia la subdirectory che un qualsiasi file.wav con lo stesso nome del file.jpg presente nell'interno della stessa.
Per la prossima volta; cerca di spiegare in modo corretto cosa vuoi ottenere, non possiamo leggerti la mente.
Lo script che segue, rinomina le directory, e tutti i sui file wav, con il nome del file jpg; naturalmente i file vengono anche numerati.
Occhio! Prova su una copia dei file, qua non ci sono simulazioni!
Ho provato con una struttura di partenza così:
Codice: Seleziona tutto
8-) tree -F
.
├── musica/
│ ├── 001/
│ │ ├── 001.wav
│ │ ├── 01022021.wav
│ │ ├── 123.wav
│ │ └── Gioia.jpg
│ └── 002/
│ ├── 002.wav
│ ├── 127.wav
│ ├── 2021.wav
│ └── Dolores.jpg
├── script1.sh*
└── script2.sh*
3 directories, 10 files
8-)
Codice: Seleziona tutto
8-) tree -F
.
├── musica/
│ ├── Dolores/
│ │ ├── Dolores_1.wav
│ │ ├── Dolores_2.wav
│ │ ├── Dolores_3.wav
│ │ └── Dolores.jpg
│ └── Gioia/
│ ├── Gioia_1.wav
│ ├── Gioia_2.wav
│ ├── Gioia_3.wav
│ └── Gioia.jpg
├── script1.sh*
└── script2.sh*
3 directories, 10 files
8-)
Codice: Seleziona tutto
#!/bin/bash
dir_file='./musica/'
while read f;do
dir_all=${f%/*} # "./musica/001"
dir_base=${dir_all%/*} # "./musica"
dir_fine=${dir_all##*/} # "001"
nome_ext=${f##*/} # "Gioia.jpg"
nome=${nome_ext%.*} # "Gioia"
[ -d "$dir_base/$nome" ] || mv "$dir_all" "$dir_base/$nome"
i=1
while read wav;do
mv "$wav" "$dir_base/$nome/${nome}_$i.wav"
((i++))
done < <(find "$dir_base/$nome" -type f -iname '*.wav')
done < <(find "$dir_file" -type f -iname '*.jpg')
exit
Salva l'Ucraina!
Re: Rinominare directory e primo file all’interno della stessa
Scusa, mi sono espresso male,
anche se all'inizio avevo precisato:
Il risultato dovrebbe essere:
├── musica/
│ ├── Dolores/
│ │ ├── Dolores.wav
│ │ ├── 01022021.wav
│ │ ├── 123.wav
│ │ └── Dolores.jpg
│ └── Gioia/
│ ├── 002.wav
│ ├── 127.wav
│ ├── Gioia.wav
│ └── Gioia.jpg
anche se all'inizio avevo precisato:
Lo script deve rinominare la directory e solamente un file .wav di ogni directorySi, le immagini sono tutte in jpg
Il primo file, ovvero può essere un qualsiasi file.
non c'è nessuna logica su tutti i nomi dei files all'interno della cartella.
Il risultato dovrebbe essere:
├── musica/
│ ├── Dolores/
│ │ ├── Dolores.wav
│ │ ├── 01022021.wav
│ │ ├── 123.wav
│ │ └── Dolores.jpg
│ └── Gioia/
│ ├── 002.wav
│ ├── 127.wav
│ ├── Gioia.wav
│ └── Gioia.jpg
- UbuNuovo
- Imperturbabile Insigne
- Messaggi: 4445
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Rinominare directory e un file qualsiasi all’interno della stessa
Ok, ultimo script.
Mi era rimasto _$i, l'ho levato
Codice: Seleziona tutto
#!/bin/bash
dir_file='./musica/'
while read f;do
dir_all=${f%/*} # "./musica/001"
dir_base=${dir_all%/*} # "./musica"
dir_fine=${dir_all##*/} # "001"
nome_ext=${f##*/} # "Gioia.jpg"
nome=${nome_ext%.*} # "Gioia"
[ -d "$dir_base/$nome" ] || mv "$dir_all" "$dir_base/$nome"
wav=$(find "$dir_base/$nome" -type f -iname '*.wav' | head -1)
mv "$wav" "$dir_base/$nome/${nome}.wav"
done < <(find "$dir_file" -type f -iname '*.jpg')
exit
Salva l'Ucraina!
Re: Rinominare directory e primo file all’interno della stessa
Funziona correttamente!
Grazie
Grazie
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 7 ospiti