Come copiare solo determinati file?
-
- Prode Principiante
- Messaggi: 15
- Iscrizione: domenica 20 dicembre 2009, 15:41
- Desktop: KDE
- Distribuzione: KXStudio 12.04.3
Come copiare solo determinati file?
La mia macchina fotografica, a ogni scatto, crea un file .jpg e uno .nef, che è la versione raw. Per ogni foto quindi esistono due file con lo stesso nome ma diversa estensione.
Diciamo che prendo tutti i file dalla sd, e li copio nella cartella A.
Poi copio solo i .jpg nella cartella B, e me li faccio passare cancellando le foto che non mi piacciono.
A questo punto vorrei lavorare sui raw delle fotografie che ho selezionato, copiando dalla cartella A a una nuova cartella C solo i file .nef che, estensione a parte, hanno lo stesso nome dei file .jpg presenti nella cartella B.
Tralasciando l'opinabilità del mio workflow fotografico (dovuto a motivi che vi risparmio), immagino che questa cosa sia fattibile con la linea di comando. Qualcuno sa dirmi come?
Diciamo che prendo tutti i file dalla sd, e li copio nella cartella A.
Poi copio solo i .jpg nella cartella B, e me li faccio passare cancellando le foto che non mi piacciono.
A questo punto vorrei lavorare sui raw delle fotografie che ho selezionato, copiando dalla cartella A a una nuova cartella C solo i file .nef che, estensione a parte, hanno lo stesso nome dei file .jpg presenti nella cartella B.
Tralasciando l'opinabilità del mio workflow fotografico (dovuto a motivi che vi risparmio), immagino che questa cosa sia fattibile con la linea di comando. Qualcuno sa dirmi come?
- dunamis
- Scoppiettante Seguace
- Messaggi: 578
- Iscrizione: mercoledì 30 luglio 2008, 13:39
- Desktop: UBUNTU
- Distribuzione: Ubuntu Studio 22.04 LTS
- Sesso: Maschile
Re: Come copiare solo determinati file?
Si è possibile da linea di comando. Tuttavia è possibile anche dal gestore Files di Unity/Gnome cliccando sulla "lente di ingrandimento" (Cerca...) e scrivendo .nef. Appariranno solo i files .nef che selezionerai e copierai nella cartella C.
GNU/Linux? Una storia d'amore che parte dal 2003 (Mandrake, Debian, Ubuntu, Kubuntu, Chakra Linux, Manjaro Linux e altro...)
La mia attuale Workstation? Notebook Omen HP Laptop con SO: Microsoft Windows 11 / Ubuntu Studio 22.04 LTS.
http://wiki.ubuntu-it.org/JoshuaDunamis
La mia attuale Workstation? Notebook Omen HP Laptop con SO: Microsoft Windows 11 / Ubuntu Studio 22.04 LTS.
http://wiki.ubuntu-it.org/JoshuaDunamis
-
- Prode Principiante
- Messaggi: 15
- Iscrizione: domenica 20 dicembre 2009, 15:41
- Desktop: KDE
- Distribuzione: KXStudio 12.04.3
Re: Come copiare solo determinati file?
Forse non mi sono spiegato: vorrei che, senza doverli selezionare io manualmente, si copiassero da A a C solo i file .nef per cui esiste un file con lo stesso nome (ma con estensione .jpg) nella cartella B.
- steff
- Moderatore Globale
- Messaggi: 40301
- Iscrizione: domenica 18 febbraio 2007, 19:48
- Desktop: LXQt+labwc
- Distribuzione: Arch; Debian; Ubuntu Server
- Sesso: Maschile
- Località: Toscana
- Contatti:
Re: Come copiare solo determinati file?
Tempo fa i nostri bravi esperti mi hanno messo su uno script qui, penso che sia adattabile per te. Sposta i file raw e jpg (ma non gli uso mai)dalla scheda in /foto/anno/mese e lancia darktable. Basta un splittare lka riga con find penso per *.nef e *.jpg, ma lascio a chi capisce di più. Basta che dici sono i percorsi tuoi per A e B http://forum.ubuntu-it.org/viewtopic.php?p=4468682
Codice: Seleziona tutto
#!/bin/bash
mese=`date +%B`
anno=`date +%Y`
if [ ! -d ~/foto/$anno/$mese ]; then
mkdir -p ~/foto/$anno/$mese
fi
find /run/media/stef/PENTAX/ -type f \( -iname '*.jpg' -o -iname '*.PEF' \) -print0 | xargs -0 -I{} mv -v {} ~/foto/$anno/$mese
darktable ~/foto/$anno/$mese &
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
-
- Prode Principiante
- Messaggi: 15
- Iscrizione: domenica 20 dicembre 2009, 15:41
- Desktop: KDE
- Distribuzione: KXStudio 12.04.3
Re: Come copiare solo determinati file?
Sinceramente non saprei come adattarlo.
- steff
- Moderatore Globale
- Messaggi: 40301
- Iscrizione: domenica 18 febbraio 2007, 19:48
- Desktop: LXQt+labwc
- Distribuzione: Arch; Debian; Ubuntu Server
- Sesso: Maschile
- Località: Toscana
- Contatti:
Re: Come copiare solo determinati file?
Basta che dici dove vuoi i due tipi di files e se li vuoi cancellare o no dalla scheda.
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
-
- Imperturbabile Insigne
- Messaggi: 2848
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: Come copiare solo determinati file?
se dai qualche informazione ti possiamo aiutare ad abbozzare lo script
copia e incolla l'output di
e di
scrivi anche i percorsi che nel tuo file system corrispondo alle cartelle A, B, C
copia e incolla l'output di
Codice: Seleziona tutto
find /media -type d
Codice: Seleziona tutto
which <nome_del_programma_che_usi_per_vedere/cancellare_i_jpeg>
- tomm
- Scoppiettante Seguace
- Messaggi: 796
- Iscrizione: lunedì 15 ottobre 2007, 10:16
- Desktop: Gnome
- Distribuzione: Ubuntu 16.04
Re: Come copiare solo determinati file?
ipotizzando che ti trovi con il terminale in una cartella che contiene le sottocartelle A, B e C, che contengono i file *.jpg e *.nef come hai spiegato tu, dovrebbe bastare questo comando:vorrei che, senza doverli selezionare io manualmente, si copiassero da A a C solo i file .nef per cui esiste un file con lo stesso nome (ma con estensione .jpg) nella cartella B.
Codice: Seleziona tutto
find ./B -type f -print0 | while read -d $'\0' file;do cp "A/$(basename -s ".jpg" "$file" ).nef" C/;done
-
- Imperturbabile Insigne
- Messaggi: 2848
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: Come copiare solo determinati file?
infatti io pensavo a una cosa del genere di quella postata da tomm preceduta dalla copia dei file dalla scheda SD all'HD:
find <PATH_SD> -type f \( -iname '*.jpg' -o -iname '*.nef' \) -print0 | xargs -0 -I{} mv -v {} <PATH_A>
e dalla cernita delle foto:
<PHOTO-TOOL>
invece il mio GNU basename 8.13 funzionerebbe in questo modo:
find ./B -type f -print0 | while read -d $'\0' file;do cp "A/$(basename "$file" jpg)nef" C/;done
Se poi ciacnorris è interessato, si può automatizzare anche l'esecuzione dello script all'inserimento della scheda SD nel lettore
find <PATH_SD> -type f \( -iname '*.jpg' -o -iname '*.nef' \) -print0 | xargs -0 -I{} mv -v {} <PATH_A>
e dalla cernita delle foto:
<PHOTO-TOOL>
invece il mio GNU basename 8.13 funzionerebbe in questo modo:
find ./B -type f -print0 | while read -d $'\0' file;do cp "A/$(basename "$file" jpg)nef" C/;done
Se poi ciacnorris è interessato, si può automatizzare anche l'esecuzione dello script all'inserimento della scheda SD nel lettore
-
- Prode Principiante
- Messaggi: 15
- Iscrizione: domenica 20 dicembre 2009, 15:41
- Desktop: KDE
- Distribuzione: KXStudio 12.04.3
Re: Come copiare solo determinati file?
Con find /media -type d mi esce un elenco infinito di cartelle che sinceramente eviterei di copincollare per motivi di privacy.rai [url=http://forum.ubuntu-it.org/viewtopic.php?p=4563423#p4563423][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:se dai qualche informazione ti possiamo aiutare ad abbozzare lo script
copia e incolla l'output die diCodice: Seleziona tutto
find /media -type d
scrivi anche i percorsi che nel tuo file system corrispondo alle cartelle A, B, CCodice: Seleziona tutto
which <nome_del_programma_che_usi_per_vedere/cancellare_i_jpeg>
Per vedere e cancellare i jpeg uso Gwenview, quindi
/usr/bin/gwenview
B e C sono nella stessa cartella, A è /media/user/NIKON D5100/DCIM/100D5100/
Intanto grazie a tutti... se poi qualcuno fosse anche così gentile da spiegarmi come funzionano le linee di comando da voi pensate, in modo da non doverle imparare proprio a memoria, sarebbe il top. ^_^
-
- Imperturbabile Insigne
- Messaggi: 2848
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: Come copiare solo determinati file?
ciacnorris ha scritto:Diciamo che prendo tutti i file dalla sd, e li copio nella cartella A.
Poi copio solo i .jpg nella cartella B, e me li faccio passare cancellando le foto che non mi piacciono.
A questo punto vorrei lavorare sui raw delle fotografie che ho selezionato, copiando dalla cartella A a una nuova cartella C solo i file .nef che, estensione a parte, hanno lo stesso nome dei file .jpg presenti nella cartella B.
ma quindi vuoi spostare le foto all'interno della stessa SD?ciacnorris ha scritto:A è /media/user/NIKON D5100/DCIM/100D5100/
Siccome non sono sicuro di avere capito, lascio a te di personalizzare i percorsi: copia e incolla questo codice in un file e salvalo con un nome di tuo gusto, diciamo ~/pippo
Codice: Seleziona tutto
#!/bin/bash
# PERSONALIZZA QUESTI PERCORSI
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
PathSD="percorso della cartella dove la macchina salva le foto"
PathA="/media/user/NIKON D5100/DCIM/100D5100/"
PathB="percorso della cartella B"
PathC="percorso della cartella C"
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[[ -d $PathA && -d PathB && -d PathC ]] || mkdir -p PathA PathB PathC
find "$PathSD" -type f \( -iname '*.jpg' -o -iname '*.nef' \) -print0 | xargs -0 -I {} cp {} "$PathA"
find "$PathSD" -type f -iname '*.jpg' -print0 | xargs -0 -I {} cp {} "$PathB"
/usr/bin/gwenview # chiudi il programma se hai già fatto la selezione delle foto
find "$PathB" -type f -print0 | while read -d $'\0' file; do
cp "$PathA/$(basename "$file" jpg)nef" "$PathC"
done
Codice: Seleziona tutto
chmod u+x ~/pippo
Codice: Seleziona tutto
~/pippo
-
- Prode Principiante
- Messaggi: 15
- Iscrizione: domenica 20 dicembre 2009, 15:41
- Desktop: KDE
- Distribuzione: KXStudio 12.04.3
Re: Come copiare solo determinati file?
Hai ragione, ho sbagliato e il percorso di A sarebbe un altro.
Mi sembra di capire che il tuo script segua tutto il mio workflow, ma a me basta capire come copiare da A a C i file .NEF che hanno lo stesso nome (salvo l'estensione) dei file .JPG che ho nella cartella B. È quello che fanno le ultime due righe?
Me le potresti spiegare, o darmi i riferimenti per documentarmi, in modo da capire come farlo da solo?
Mi sembra di capire che il tuo script segua tutto il mio workflow, ma a me basta capire come copiare da A a C i file .NEF che hanno lo stesso nome (salvo l'estensione) dei file .JPG che ho nella cartella B. È quello che fanno le ultime due righe?
Me le potresti spiegare, o darmi i riferimenti per documentarmi, in modo da capire come farlo da solo?
-
- Imperturbabile Insigne
- Messaggi: 2848
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: Come copiare solo determinati file?
questo è lo script con la spiegazione di quello che fanno le righe
come vedi, se non ti interessa automatizzare le altre operazioni, puoi eliminare la parte di script delimitata; ricorda comunque di personalizzare i percorsi
per imparare l'uso dei comandi bisogna/basta cominciare ad usarli, le istruzioni sono nel manuale di ogni comando e le vedi nel terminale con
Codice: Seleziona tutto
#!/bin/bash
# PERSONALIZZA QUESTI PERCORSI
# vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
PathSD="percorso della cartella dove la macchina salva le foto"
PathA="percorso della cartella A"
PathB="percorso della cartella B"
PathC="percorso della cartella C"
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# ------------------------------------------------------------------------------------------------------ #
# verifica che tutte le cartelle esistano, se non è così le crea
[[ -d $PathA && -d PathB && -d PathC ]] || mkdir -p $PathA $PathB $PathC
# copia tutte le immagini dalla SD alla cartella A
find "$PathSD" -type f \( -iname '*.jpg' -o -iname '*.nef' \) -print0 | xargs -0 -I {} cp {} "$PathA"
# copia i file.jpg dalla SD alla cartella B
find "$PathSD" -type f -iname '*.jpg' -print0 | xargs -0 -I {} cp {} "$PathB"
/usr/bin/gwenview # chiudi il programma quando hai fatto la selezione delle foto
# ------------------------------------------------------------------------------------------------------ #
# cerca i file.jpg rimasti nella cartella B
find "$PathB" -type f -print0 | while read -d $'\0' file; do
# copia da 'A' a 'C' i file.nef che hanno lo stesso nome di quei file
cp "$PathA/$(basename "$file" jpg)nef" "$PathC"
done
per imparare l'uso dei comandi bisogna/basta cominciare ad usarli, le istruzioni sono nel manuale di ogni comando e le vedi nel terminale con
Codice: Seleziona tutto
man <comando>
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 30 ospiti