Apakah mungkin untuk secara otomatis mengganti nama file ketika ditempatkan di direktori tertentu?
Misalnya saya memiliki direktori bernama "dir0". Saya memindahkan atau menyalin file bernama "file1" ke "dir0". Maka "file1" harus berganti nama menjadi "file1_ {timestamp saat ini}"
linux
filesystems
Nick.h
sumber
sumber
Jawaban:
Biasanya Anda akan melakukan ini secara terprogram pada saat Anda membuat atau memindahkan file, tetapi dimungkinkan untuk memicu skrip setiap kali file dibuat atau dipindahkan ke folder menggunakan
incron
. Siapkan file tab Anda menggunakanincrontab -e
dengan garis seperti ini, tetapi dengan jalur Anda tentu saja:Kemudian dalam
/path/to/script
menulis tindakan ganti nama cepat. Ketahuilah bahwa skrip juga akan dipanggil untuk file baru yang Anda buat, sehingga harus menguji apakah file tersebut telah dinamai dengan tepat atau tidak. Dalam contoh ini memeriksa untuk melihat apakah file memiliki angka sepuluh digit untuk detik dari zaman sebagai bagian terakhir dari nama file, dan jika tidak, ia menambahkannya:Sunting: Ketika saya pertama kali menulis ini saya kekurangan waktu dan tidak tahu bagaimana membuat
bash
pola yang cocok di sini. Gilles menunjukkan cara melakukan ini tanpa menggunakan grep menggunakan pencocokan ERE di bash:sumber
Saya pikir itu
inotify
adalah alat yang dapat digunakan dalam kasus ini. Di Debian ada alatinoticoming
untuk mengeksekusi tindakan pada pembuatan file:{}
akan diganti dengan nama file.Perintah yang saya berikan tidak lengkap - itu menyebabkan perulangan karena ketika file akan diganti namanya akan dikenali sebagai baru sehingga akan
mv
diedit LAGI dan seterusnya. Untuk menghindari ini, Anda bisa menggunakan--suffix
opsi jika Anda tahu sufiks apa yang akan ada dalam file sebelum mengganti nama.sumber
inoticoming
. Karena penasaran, kapan lebih baik menggunakan iniinocron
?inoticoming
"mirip denganincrond
, tetapi bobotnya lebih ringan dan tidak dimulai sebagai daemon default", jadi saya pikir itu hanyalah solusi lain dengan pendekatan yang sedikit berbeda. .. Saya pikir ituincron
lebih populer - Saya punya sedikit kesulitan untuk menemukaninoticoming
halaman rumah paket untuk itu di luar Debian ...inoticoming
hanya menemukan di distribusi berbasis Debian (di Gentoo saya tidak ada ebuild untuk itu). Pada halaman yang saya posting ada dua paket:reprepro
dan di bawahnyainoticoming
...Anda bisa saja mengambil skrip seperti ini dan menjalankannya ... Saya akan membiarkannya sebagai latihan bagi pembaca untuk menambahkan bit ekstra agar dimulai sebagai layanan dan mencegah beberapa salinan berjalan sekaligus.
Dan ini dia berfungsi:
sumber
perl
bisa melakukan apa saja, tetapi skrip persisten yang berjalan pada perulangan X-detik sementara-benar jelas merupakan peretasan ketika Anda bisa mendapatkan pemberitahuan acara tentang penulisan file dan merespons secara instan tanpa menghabiskan sumber daya sepanjang waktu.