Mi scuso in anticipo se è stata data una risposta, ma ho fatto una lunga ricerca nella speranza di una soluzione.
Ho un'app Automator funzionante che aggiunge la data corrente di sei cifre (YYMMDD) alla fine del nome del file:
- Input: Filename.txt
- Output: nomefile_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 è ottimo ma dopo averlo usato regolarmente, ho realizzato che sarebbe bello non solo aggiungere la data corrente ma prima controllare se una data è già stata aggiunta al nome del file; in tal caso, rimuovilo e aggiungi la data corrente, altrimenti aggiungi semplicemente la data corrente.
Ci sono due scenari:
- Nome file contiene una data (precedente / corrente / futura) nel formato a 6 cifre descritto in precedenza preceduto da un trattino basso (Nome file_181212.txt)
- Il nome file non contiene il formato data a 6 cifre aggiunto (Filename.txt)
Mi rendo conto che la soluzione che spero rimuoverà qualsiasi sei cifre e il suo precedente "_" se esiste, che si tratti di una data o meno.
È possibile precedere il mio attuale comando bash con qualcosa del tipo:
if any combination of numbers exist immediately before the file extension (".ext") AND contains exactly 6 digits AND is preceded by an underscore ("_")
then remove the underscore plus 6 digits AND run the bash command listed above
if not then run the bash command above
Sommario Sto cercando di alleviare manualmente la rimozione delle date che possono esistere su un nome di file prima di aggiungerle alla data corrente. Alcuni file potrebbero avere date e altri no.