Bu cevap verildiyse ancak bir çözüm umuduyla uzunca bir arama yaptıysanız şimdiden özür dilerim.
Geçerli altı basamaklı tarihi (YYMMDD) dosya adının sonuna ekleyen çalışan bir Automator uygulamasına sahibim:
- Giriş: Dosyaadı.txt
- Çıktı: Dosyaadı_181212.txt
Geçerli bash komutu:
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
Bu harika, ancak düzenli kullandıktan sonra, sadece geçerli tarihi eklemekle kalmayıp, aynı zamanda zaten bir dosya adına eklenip eklenmediğini görmek için kontrol etmenin iyi olacağını fark ettim; öyleyse, kaldırın ve geçerli tarihi ekleyin, aksi takdirde geçerli tarihi ekleyin.
İki senaryo var:
- Dosya adı, daha önce bir alt çizgi tarafından belirtilen 6 basamaklı biçimde (önceki / geçerli / gelecek) herhangi bir tarih içeriyor (Dosyaadı_181212.txt)
- Dosya adı, kendisine eklenmiş 6 basamaklı tarih biçiminde içermiyor (Dosyaadı.txt)
Beklediğim çözümün, tarih olsun ya da olmasın, altı basamağı ve önceki "_" harflerini kaldıracağını fark ediyorum.
Mevcut bash komutumdan önce şöyle bir şey olabilir mi?
dosya uzantısından hemen önce herhangi bir sayı kombinasyonu varsa (".ext") VE tam olarak 6 rakam içeriyorsa VE önce bir alt çizgi ("_") gelir
daha sonra alt çizgi artı 6 haneyi kaldırın VE yukarıda listelenen bash komutunu çalıştırın
değilse, yukarıdaki bash komutunu çalıştırın.
Özet Geçerli tarihi eklemeden önce bir dosya adında olabilecek tarihleri kaldırarak el ile hafifletmeye çalışıyorum. Bazı dosyaların tarihleri olabilir, bazıları ise olmayabilir.