[Risolto] Comandi da terminale: Salvare un file "nome_n+1"
[Risolto] Comandi da terminale: Salvare un file "nome_n+1"
Salve a tutti,
Ho una webcam collegata ad un sensore di luminosità, scatta una foto ogni 10 minuti solo se c'è luce. Qual'è il comando da terminale per salvare il file .jpg in automatico in una cartella con n° progressivo? Mi spiego meglio se l'ultima foto è stata salvata con nome "foto0023" qual è l'istruzione per far sì che la al successiva foto sia nominata "foto0024"? Cioè foto0023+0001?
Grazie per l'attenzione e per l'aiuto
Saluti
LaPa
Ho una webcam collegata ad un sensore di luminosità, scatta una foto ogni 10 minuti solo se c'è luce. Qual'è il comando da terminale per salvare il file .jpg in automatico in una cartella con n° progressivo? Mi spiego meglio se l'ultima foto è stata salvata con nome "foto0023" qual è l'istruzione per far sì che la al successiva foto sia nominata "foto0024"? Cioè foto0023+0001?
Grazie per l'attenzione e per l'aiuto
Saluti
LaPa
Ultima modifica di Lapa il sabato 29 aprile 2017, 15:19, modificato 1 volta in totale.
Eterno imbranato su Ubuntu Linux e .... in tantissime altre cose
- thece
- Tenace Tecnocrate
- Messaggi: 12946
- Iscrizione: lunedì 23 aprile 2007, 14:16
- Distribuzione: Debian 12 (Bookworm) - KDE
Re: Comandi da terminale: Salvare un file "nome_n+1"
Non esiste alcun comando del genere. Occorre costuirsi uno script che vada a salvare il file con il nome opportuno.Lapa [url=http://forum.ubuntu-it.org/viewtopic.php?p=4965847#p4965847][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: Qual'è il comando da terminale per salvare il file .jpg in automatico in una cartella con n° progressivo?
Tempo fa avevo scritto questo scriptino
(script corretto)
Codice: Seleziona tutto
#!/bin/bash
# Crea un file con pattern $BASE_PATH/$FILE_PREFIX$FILE_NUMBER$FILE_EXTENSION (Es: /temp/SOMETHING00001.TXT)
BASE_PATH="/temp"
FILE_PREFIX="SOMETHING"
FILE_NUMBER="1"
FILE_EXTENSION=".TXT"
FILE_NAME=""
if [[ ! -d "$BASE_PATH" ]]; then
echo "[ERR] Directory '$BASE_PATH' doesn't exists"
exit 0
fi
FILE_NUMBER=$(ls -1rv $BASE_PATH/$FILE_PREFIX*$FILE_EXTENSION 2> /dev/null | head -n 1 | grep -o '[[:digit:]]*')
FILE_NUMBER=$(echo $FILE_NUMBER | sed 's/^0*//')
FILE_NUMBER=$(($FILE_NUMBER + 1))
FILE_NAME="$(printf "%s%05d%s" $FILE_PREFIX $FILE_NUMBER $FILE_EXTENSION)"
# Parte da cambiare ... qui esegue il comando touch
touch "$BASE_PATH/$FILE_NAME"
exit 0
Ultima modifica di thece il giovedì 27 aprile 2017, 10:49, modificato 1 volta in totale.
Re: Comandi da terminale: Salvare un file "nome_n+1"
Ho cambiato il codice così per adattarlo al mio caso, va bene?
però io dovrei inserire tutte queste istruzioni in un comando su terminale e non ho capito come fare, il comando è il seguente:
raspistill -o "IlCodiceSuggeritoDaTe"
Come faccio ad inserirlo nel comando?
Grazie
LaPa
Codice: Seleziona tutto
#!/bin/bash
# Crea un file con pattern $BASE_PATH/$FILE_PREFIX$FILE_NUMBER$FILE_EXTENSION (Es: /temp/SOMETHING00001.TXT)
BASE_PATH="/mnt/usbhd/PhotoOfPlants"
FILE_PREFIX="Foto"
FILE_NUMBER="1"
FILE_EXTENSION=".jpg"
FILE_NAME=""
if [[ ! -d "$BASE_PATH" ]]; then
echo "[ERR] Directory '$BASE_PATH' doesn't exists"
exit 0
fi
FILE_NUMBER=$(ls -1rv $BASE_PATH/$FILE_PREFIX*$FILE_EXTENSION 2> /dev/null | head -n 1 | grep -o '[[:digit:]]*')
FILE_NUMBER=$(($FILE_NUMBER + 1))
FILE_NAME="$(printf "%s%05d%s" $FILE_PREFIX $FILE_NUMBER $FILE_EXTENSION)"
# Parte da cambiare ... qui esegue il comando touch
touch "$BASE_PATH/$FILE_NAME"
exit 0
però io dovrei inserire tutte queste istruzioni in un comando su terminale e non ho capito come fare, il comando è il seguente:
raspistill -o "IlCodiceSuggeritoDaTe"
Come faccio ad inserirlo nel comando?
Grazie
LaPa
Eterno imbranato su Ubuntu Linux e .... in tantissime altre cose
- thece
- Tenace Tecnocrate
- Messaggi: 12946
- Iscrizione: lunedì 23 aprile 2007, 14:16
- Distribuzione: Debian 12 (Bookworm) - KDE
Re: Comandi da terminale: Salvare un file "nome_n+1"
Non devi inserire lo script nel comando, devi fare l'esatto contrario: inserire il comando nello scriptLapa ha scritto: però io dovrei inserire tutte queste istruzioni in un comando su terminale e non ho capito come fare, il comando è il seguente:
raspistill -o "IlCodiceSuggeritoDaTe"
Come faccio ad inserirlo nel comando?
(script corretto)
Codice: Seleziona tutto
#!/bin/bash
# Crea un file con pattern $BASE_PATH/$FILE_PREFIX$FILE_NUMBER$FILE_EXTENSION (Es: /temp/SOMETHING00001.TXT)
BASE_PATH="/mnt/usbhd/PhotoOfPlants"
FILE_PREFIX="Foto"
FILE_NUMBER="1"
FILE_EXTENSION=".jpg"
FILE_NAME=""
if [[ ! -d "$BASE_PATH" ]]; then
echo "[ERR] Directory '$BASE_PATH' doesn't exists"
exit 0
fi
FILE_NUMBER=$(ls -1rv $BASE_PATH/$FILE_PREFIX*$FILE_EXTENSION 2> /dev/null | head -n 1 | grep -o '[[:digit:]]*')
FILE_NUMBER=$(echo $FILE_NUMBER | sed 's/^0*//')
FILE_NUMBER=$(($FILE_NUMBER + 1))
FILE_NAME="$(printf "%s%05d%s" $FILE_PREFIX $FILE_NUMBER $FILE_EXTENSION)"
raspistill -o "$BASE_PATH/$FILE_NAME"
exit 0
Codice: Seleziona tutto
chmod +x SCRIPT.sh
Codice: Seleziona tutto
./SCRIPT.sh
Ultima modifica di thece il giovedì 27 aprile 2017, 10:53, modificato 1 volta in totale.
Re: Comandi da terminale: Salvare un file "nome_n+1"
Ancora non ci sono perché quel comando è all'interno di uno script Phython.
Eterno imbranato su Ubuntu Linux e .... in tantissime altre cose
- thece
- Tenace Tecnocrate
- Messaggi: 12946
- Iscrizione: lunedì 23 aprile 2007, 14:16
- Distribuzione: Debian 12 (Bookworm) - KDE
Re: Comandi da terminale: Salvare un file "nome_n+1"
Allora molto probabilmente non hai bisogno del mio script. Devi reimplementare la logica del mio script all'interno dello script Python.Lapa [url=http://forum.ubuntu-it.org/viewtopic.php?p=4966880#p4966880][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: Ancora non ci sono perché quel comando è all'interno di uno script Phython.
Re: Comandi da terminale: Salvare un file "nome_n+1"
Forse potrei semplicemente inserire nello script di Python la condizione: se luminosità > di tot valore lancia path/SCRIPT.sh
ti torna come ragionamento?
grazie dei consigli
Saluti
LaPa
ti torna come ragionamento?
grazie dei consigli
Saluti
LaPa
Eterno imbranato su Ubuntu Linux e .... in tantissime altre cose
- thece
- Tenace Tecnocrate
- Messaggi: 12946
- Iscrizione: lunedì 23 aprile 2007, 14:16
- Distribuzione: Debian 12 (Bookworm) - KDE
Re: Comandi da terminale: Salvare un file "nome_n+1"
E' una soluzione, a mio avviso brutta, ma è una soluzione e ovviamente sei libero di perseguirla.Lapa [url=http://forum.ubuntu-it.org/viewtopic.php?p=4971441#p4971441][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: ti torna come ragionamento?
Per raggiungere il tuo scopo, vista la banalità algoritmica, il mio suggerimento è di implementare lo script interamente in Python.
Re: Comandi da terminale: Salvare un file "nome_n+1"
Non so niente di programmazione e non riesco a capire perché la soluzione la consideri brutta, detto questo potrei nello script di Python inserire il comando per aprire il terminale metterci dentro il contenuto di SCRIPT.sh. In questa maniera sarebbe meno brutta?
Grazie
Saluti
LaPa
Grazie
Saluti
LaPa
Eterno imbranato su Ubuntu Linux e .... in tantissime altre cose
- thece
- Tenace Tecnocrate
- Messaggi: 12946
- Iscrizione: lunedì 23 aprile 2007, 14:16
- Distribuzione: Debian 12 (Bookworm) - KDE
Re: Comandi da terminale: Salvare un file "nome_n+1"
E' una pura questione (personale?) di stile di programmazione: mi sembra del tutto fuori luogo suddividere uno script di poche decine di righe, che deve andare a risolvere un problema semplice, in più script e per giunta scritti in linguaggi di programmazione diversi. La manutenzione dello script sarebbe inutilmente complessa. Ma, ti ripeto, questo è solo il mio punto di vista (*)
Visto che affermi di non sapere nulla di programmazione, lascia perdere quello che ti ho detto più sopra e fai come tu ritieni più opportuno, alla fine basta risolvere o no?
Certo che però il tuo non voler nemmeno provarci a modificare lo script Python mi sembra in contrasto con quanto riportato nella tua firma: "... e per il tentativo di imparare un po' di Python ..."
(*) a chi prudessero le dita: non tiriamo fuori il discorso "modularizzazione del codice". Non mi sembra questo il caso
Visto che affermi di non sapere nulla di programmazione, lascia perdere quello che ti ho detto più sopra e fai come tu ritieni più opportuno, alla fine basta risolvere o no?
Certo che però il tuo non voler nemmeno provarci a modificare lo script Python mi sembra in contrasto con quanto riportato nella tua firma: "... e per il tentativo di imparare un po' di Python ..."
(*) a chi prudessero le dita: non tiriamo fuori il discorso "modularizzazione del codice". Non mi sembra questo il caso
Re: Comandi da terminale: Salvare un file "nome_n+1"
Discussione molto interessante. Per cui chiedo all'autore dello script bash (thece) se è corretta la mia interpretazione dello stesso. Altrimenti lo modifico, prima di accingermi a provarlo. I miei commenti sono inseriti dentro il seguente codice. Grazie anticipate per l'help.
Codice: Seleziona tutto
#!/bin/bash
# ---------------- FotoAppend.sh ---------- script prelevato da Ubuntu Forum
# (Programmazione, autore thece) [10-04-17] e riadattato alle mie cartelle ----------
# Crea un file con pattern $BASE_PATH/$FILE_PREFIX$FILE_NUMBER$FILE_EXTENSION (Es: /temp/SOMETHING00001.TXT)
#BASE_PATH="/mnt/usbhd/PhotoOfPlants"
BASE_PATH="/home/alfabeta/Scrivania" # FotoAppend.sh si trova in questa directory di lavoro
FILE_PREFIX="Foto"
FILE_NUMBER="23" # l'ultima mia foto 23.jpg dentro il BASE_PATH.
# Vorrei rinominare altri tre file (aa.jpg, bb.jpg, cc.jpg) che si trovano sempre qui
# Obiettivo atteso dallo script: ottenere le 4 foto con il nome così modificato:
# Foto-23.jpg, Foto-24.jpg, Foto-25.jpg, Foto-26.jpg
# --------- E' corretta questa interpretazione dello script? --------
FILE_EXTENSION=".jpg"
FILE_NAME=""
if [[ ! -d "$BASE_PATH" ]]; then
echo "[ERR] Directory '$BASE_PATH' doesn't exists"
exit 0
fi
FILE_NUMBER=$(ls -1rv $BASE_PATH/$FILE_PREFIX*$FILE_EXTENSION 2> /dev/null | head -n 1 | grep -o '[[:digit:]]*')
FILE_NUMBER=$(($FILE_NUMBER + 1))
FILE_NAME="$(printf "%s%05d%s" $FILE_PREFIX $FILE_NUMBER $FILE_EXTENSION)"
raspistill -o "$BASE_PATH/$FILE_NAME"
exit 0
- thece
- Tenace Tecnocrate
- Messaggi: 12946
- Iscrizione: lunedì 23 aprile 2007, 14:16
- Distribuzione: Debian 12 (Bookworm) - KDE
Re: Comandi da terminale: Salvare un file "nome_n+1"
@BlueEyes
io ti rispondo qui, ma per eventuali altri messaggi apri una tua discussione, linkando questa, altrimenti si genera confusione.
No, credo che tu abbia inteso male.
Lo script può essere memorizzato ovunque.
La directory $BASE_PATH è la directory che conterrà i (nuovi) file, denominati secondo lo schema: $FILE_PREFIX$FILE_NUMBER$FILE_EXTENSION. Quindi seguendo l'esempio del mio commento
Lo script non rinomina i file (vecchi) eventualmente già presenti nella directory
io ti rispondo qui, ma per eventuali altri messaggi apri una tua discussione, linkando questa, altrimenti si genera confusione.
No, credo che tu abbia inteso male.
Lo script può essere memorizzato ovunque.
La directory $BASE_PATH è la directory che conterrà i (nuovi) file, denominati secondo lo schema: $FILE_PREFIX$FILE_NUMBER$FILE_EXTENSION. Quindi seguendo l'esempio del mio commento
Codice: Seleziona tutto
/temp/SOMETHING00001.TXT
/temp/SOMETHING00002.TXT
/temp/SOMETHING00003.TXT
/temp/SOMETHING00004.TXT
/temp/SOMETHING00005.TXT
...
Re: Comandi da terminale: Salvare un file "nome_n+1"
Grazie del chiarimento, thece. L'utilizzo che avrei voluto fare dello script era diverso, per cui chiudo qui il mio intervento. Ciao
Re: Comandi da terminale: Salvare un file "nome_n+1"
Salve, non ho risolto il problema: mi salva la foto fino al file "foto00008.jpg" la "foto00009.jpg" non riesce a produrla. Su terminale mi appare un errore del tipo "numero ottale non valido". cioè sembrerebbe che funzioni ad ottali invece che a decimali pertanto non scrive "foto00009.jpg" come mai? Come risolvo?
Grazie
Saluti
LaPa
Grazie
Saluti
LaPa
Eterno imbranato su Ubuntu Linux e .... in tantissime altre cose
Re: Comandi da terminale: Salvare un file "nome_n+1"
Per la precisione, in seguito al tentativo di creazione del salvataggio del file 00009 il terminale risponde:
"/home/pi/Desktop/ScattaFotoPianta+1.sh: riga 17: 00008: valore troppo grande per la base (il token dell'errore è "00008")
/home/pi/Desktop/ScattaFotoPianta+1.sh: riga 18: printf: 00008: numero ottale non valido"
e non lo scrive
grazie
Saluti
LaPa
"/home/pi/Desktop/ScattaFotoPianta+1.sh: riga 17: 00008: valore troppo grande per la base (il token dell'errore è "00008")
/home/pi/Desktop/ScattaFotoPianta+1.sh: riga 18: printf: 00008: numero ottale non valido"
e non lo scrive
grazie
Saluti
LaPa
Eterno imbranato su Ubuntu Linux e .... in tantissime altre cose
- UbuNuovo
- Imperturbabile Insigne
- Messaggi: 4444
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Comandi da terminale: Salvare un file "nome_n+1"
Non ho letto tutta la discussione, se fai un incremento o una somma devi farla con il numero "pulito", i numeri preceduti da zero sono considerati ottali.
Gli zero di riempimento li aggiungi con printf.
Gli zero di riempimento li aggiungi con printf.
Salva l'Ucraina!
Re: Comandi da terminale: Salvare un file "nome_n+1"
non ho capito
Eterno imbranato su Ubuntu Linux e .... in tantissime altre cose
- thece
- Tenace Tecnocrate
- Messaggi: 12946
- Iscrizione: lunedì 23 aprile 2007, 14:16
- Distribuzione: Debian 12 (Bookworm) - KDE
Re: Comandi da terminale: Salvare un file "nome_n+1"
ho corretto lo script: vedi sopra.
-
- Imperturbabile Insigne
- Messaggi: 2848
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: Comandi da terminale: Salvare un file "nome_n+1"
oppure, invece di stare a cancellare tutti gli zero iniziali si può imporre di interpretare il numero in base decimale
EDIT corretto un errore di copia/incolla che mi è stato gentilmente fatto notare
Codice: Seleziona tutto
~$ FILE_NUMBER=0000009
~$ echo $(( $FILE_NUMBER + 1 ))
bash: 0000009: valore troppo grande per la base (il token dell'errore è "0000009")
~$ echo $(( 10#$FILE_NUMBER + 1 ))
10
~$
Ultima modifica di rai il giovedì 27 aprile 2017, 15:13, modificato 1 volta in totale.
- UbuNuovo
- Imperturbabile Insigne
- Messaggi: 4444
- Iscrizione: sabato 12 dicembre 2009, 20:58
- Desktop: Mate
- Distribuzione: Ubuntu Mate 22.04.1 LTS
- Sesso: Maschile
- Contatti:
Re: Comandi da terminale: Salvare un file "nome_n+1"
Intendevo dire che non puoi fare, come hai detto:
Poi puoi aggiungere il prefisso e gli zero davanti con printf, come ti ha fatto vedere Thece.
devi pulire la stringa in modo da fare la somma con i soli numeri significativi, senza gli zero davanti.foto0023+0001
Codice: Seleziona tutto
23+1
Salva l'Ucraina!
Chi c’è in linea
Visualizzano questa sezione: nik1404 e 13 ospiti