Genellikle bunu, dosyayı oluşturduğunuzda veya taşıdığınızda programlı olarak yaparsınız, ancak bir dosya oluşturulduğunda veya kullanılarak bir klasöre taşındığında bir komut dosyasını tetiklemek mümkündür incron
. Sekme dosyanızı incrontab -e
böyle bir satırla, ancak elbette yollarınızla ayarlayın:
/path/to/dir0 IN_MOVED_TO,IN_CREATE /path/to/script $@/$#
Sonra /path/to/script
hızlı bir yeniden adlandırma eylemi yazın. Komut dosyasının, oluşturduğunuz yeni dosya için de çağrılacağını unutmayın; bu nedenle, dosyanın zaten uygun şekilde adlandırılıp adlandırılmadığını sınamalıdır. Bu örnekte, dosyanın dosya adının son kısmı olarak çağdan itibaren on basamaklı bir sayı olup olmadığını kontrol eder ve yoksa ekler:
#!/bin/bash
echo $1 | grep -qx '.*_[0-9]\{10\}' || mv "$1" "$1_$(date +%s)"
Düzenleme: Ben bunu ilk yazdığımda zamanında kısaydı ve bash
burada desen eşleştirme yapmak nasıl anlayamadık . Gilles bash'da ERE eşleşmesini kullanarak grep'i çağırmadan bunu nasıl yapacağına dikkat çekti :
#!/bin/bash
[[ ! ( $1 =~ _[0-9]{10}$ ) ]] && mv "$1" "$1_$(date +%s)"