Jadi, katakanlah, saya memiliki direktori dengan banyak file seperti g.txt, tempat g.txt terakhir diubah pada, katakanlah, 20 Juni 2012.
Bagaimana saya akan menamai ulang semua file (seperti g.txt) dengan tanggal modifikasi terakhir 20 Juni 2012 yang ditambahkan pada akhirnya?
date
implementasi itu? GNU sayadate
sepertinya tidak menangani input.inilah versi one-liner goldschrafe yang:
juga berupaya dengan nama file yang dimulai dengan tanda hubung
for f in *; do mv -- "$f" "$f-$(date -r "$f" +%Y%m%d)"; done
sumber
date -r "$f" +%Y%m%d
atau tidak akan berfungsi jikaPOSIXLY_CORRECT
ada di lingkungan. Secara umum, opsi harus diberikan sebelum argumen lain."${f}"
.Zsh one-liner wajib (tidak termasuk pemuatan satu kali komponen opsional):
Kami menggunakan
stat
builtin darizsh/stat
modul , danzmv
fungsinya untuk mengganti nama file. Dan inilah tambahan yang menempatkan tanggal sebelum ekstensi, jika ada.sumber
Seperti yang saya mengerti kita tidak tahu sebelumnya apa tanggal modifikasi. Jadi kita perlu mendapatkannya dari setiap file, memformat output dan mengganti nama setiap file dengan cara sehingga termasuk tanggal modifikasi dalam nama file.
Anda dapat menyimpan skrip ini sebagai sesuatu seperti "modif_date.sh" dan membuatnya dapat dieksekusi. Kami memohonnya dengan direktori target sebagai argumen:
modif_date.sh txt_collection
Di mana "txt_collection" adalah nama direktori tempat kita memiliki semua file yang ingin kita ganti namanya.
sumber
stat
utilitas berbeda atau tidak sama sekali.ls
tidak dapat diandalkan . Pada beberapa varian unix, nama pengguna dan grup dapat berisi spasi, yang akan menghilangkan penjajaran kolom tanggal.ls
sebagai tanggal dan waktu (bukan tanggal dan tahun) harus dalam tahun berjalan. Ini tidak benar. Itu dalam enam bulan terakhir; yang bisa di tahun sebelumnya (misalnya, 27-September-2016 hingga 31-Des-2016 dalam enam bulan terakhir). (6) Dengan risiko menirukan Greg's Wiki (yang sudah dikutip @Gilles), nama file yang mengandung baris baru dan spasi dapat menyebabkan ini gagal. … (Lanjutan)Berikut ini adalah versi one-liner cas, (berdasarkan oneliner goldschrafe) yang diperluas dengan idempoten ,
yaitu diperluas ke file awalan dengan waktu tanggal dan untuk melakukan ini hanya bagi mereka yang belum memiliki awalan waktu tanggal .
Use-case: bermanfaat jika Anda menambahkan file baru ke direktori dan ingin menambahkan awalan waktu tanggal untuk file yang belum memilikinya.
sumber
for f in *.jpg ; do jhead -ft "$f" ; done
sumber: unix.stackexchange.com/a/290755/9689