Chiedo scusa in anticipo se è stata data una risposta, ma ho effettuato una lunga ricerca nella speranza di una soluzione.
Ho un'app Automator funzionante che aggiunge la data corrente di sei cifre (AAMMGG) alla fine del nome del file:
- Input: Nomefile.txt
- Output: Nome file_181212.txt
Comando bash corrente:
today=$(date +%y%m%d)
for f in "$@"
do
basename=${f##*/}
filename=${basename%.*}
path=${f%/*}
ext=${f##*.}
newfilename="$filename"_"$today"
mv "$f" "$path"/"$newfilename"."$ext"
done
Questo è fantastico ma dopo averlo usato regolarmente, mi sono reso conto che sarebbe bello non solo aggiungere la data corrente, ma prima controlla se una data è già stata aggiunta al nome del file; in tal caso, rimuoverlo e aggiungere la data corrente, altrimenti aggiungere semplicemente la data corrente.
Ci sono due scenari:
- Il nome file contiene qualsiasi data (precedente / attuale / futuro) nel formato a 6 cifre descritto precedentemente preceduto da un trattino basso (Nome file_181212.txt)
- Il nome file non contiene nel formato data a 6 cifre ad esso aggiunto (Nomefile.txt)
Mi rendo conto che la soluzione che spero rimuoverà ogni sei cifre e la precedente "_" se esiste, che sia una data o meno.
È possibile precedere il mio comando bash attuale con qualcosa del tipo:
se una combinazione di numeri esiste immediatamente prima dell'estensione del file (".ext") AND contiene esattamente 6 cifre AND è preceduto da un trattino basso ("_")
quindi rimuovere il carattere di sottolineatura più 6 cifre ED eseguire il comando bash elencato sopra
in caso contrario, eseguire il comando bash sopra
Riepilogo Sto cercando di alleviare la rimozione manuale delle date che potrebbero esistere su un nome file prima di aggiungere loro la data corrente. Alcuni file potrebbero avere date e altri no.