Virgolette doppie nello script Linux


1

Sto cercando di creare uno script che si sposta in una cartella specifica, quindi rinomina e sposta tutti i file in un'altra posizione. Tuttavia, sto ricevendo un errore alla fine del comando JHEAD a causa dello spazio tra la formattazione di data e ora. Ho provato a usare virgolette doppie, virgolette nello spazio, ecc. Niente funziona.

Qualsiasi aiuto sarebbe apprezzato.

cd /home/fitur/Backup/Temp/

jhead_cmd='jhead -norot -ft -n/home/fitur/Pictures/Photos/%Y/%Y-%m-%d_%H:%M:%S {}'

find . -type f -name "*.JP*" -exec $jhead_cmd \;
find . -type f -name "*.jp*" -exec $jhead_cmd \;

C'è qualcosa a che fare senza spazio tra -ne /home...nella variabile jhead_cmd? Ovviamente -n significa passare una stringa di posizione ... le doppie virgolette dovrebbero essere usate mentre stai formulando all'interno, avrei pensato che le virgolette singole sarebbero una stringa letterale ...?
Kinnectus,

@BigChris: Manpage dice che è OK: linux.die.net/man/1/jhead
Jan

Solo per commentare il mio post. Dovrebbe essere -nf / home / fitur / Pictures / Photos /% Y /% Y-% m-% d% H:% M:% S {} 'e non -n / home / fitur / Pictures / Photos / % Y /% Y-% m-% d_% H:% M:% S {} 'Nota la sottolineatura tra% Y.% m-% d e% H:% M:% S. Dovrebbe essere una distanza.
Fitur,

Risposte:


1

Se si combinano i due findcomandi rendendo insensibile il maiuscolo / minuscolo del nome, è possibile evitare la variabile:

find . -type f -iname "*.jp*" -exec jhead [...] {} \;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.