Ho file che sono denominati come "12. 2017-04-11 063118.jpg" e "123. 2016-09-05 115236.jpg". Il numero a sinistra del "." conta come un indice da 1 a 1400.
Come posso impostare la data e l'ora di creazione in base a come è specificato nel nome del file per tutti i 1400 file che ho nella cartella. So che il comando touch -t cambia la data di creazione, ma non so come estrarre le informazioni di data / ora dal nome del file e inserirle in un comando, in modo che questo avvenga automaticamente per tutti i file.
So da un altro thread che il sotto dovrebbe funzionare. ma non so come modificare la conversione del testo per applicare correttamente alla convenzione di denominazione dei file.
for f in *; do
t=$(echo $f | sed -E 's/([A-z]*-)|([ ,;])|(\..*)//g' | sed -E 's/(.*)(..)/\1.\2/')
touch -t $t "$f"
done
Il codice sopra riportato funziona se la convenzione di denominazione dei file è come "clip-2014-01-31 18; 50; 15.mp4", tuttavia, ho un formato diverso: "12. 2017-04-11 063118.jpg", e "123. 2016-09-05 115236.jpg". Qualcuno sa come modificare il sed
comando di funzione per elaborare la conversione nel formato corretto per il tocco?
bare *
(glob) elencherà ogni oggetto del file system nella directory. Pensi che usando*.jpg
sarebbe una scelta migliore?