Anda dapat menggunakan find
. Hitung tanggal sesuai dengan kebutuhan dan penggunaan Anda,
find /tmp -maxdepth 1 -mtime -1 -type f -name "DBG_A_sql*" -print
Setelah mengonfirmasi, hapuslah,
find /tmp -maxdepth 1 -mtime -1 -type f -name "DBG_A_sql*" -delete
Sebagai permulaan, temukan file dibuat pada waktu tertentu agak sulit, karena waktu pembuatan biasanya tidak disimpan di mana pun atau sulit didapat. Apa yang Anda miliki adalah mtime
, atau waktu modifikasi terakhir, dan ctime
yang merupakan waktu "perubahan", diperbarui pada setiap perubahan pada inode. Saya anggap Anda menginginkan waktu modifikasi.
Menemukan file yang dimodifikasi pada tanggal tertentu ternyata agak menarik, karena find
tampaknya membuatnya agak sulit untuk melakukannya dengan benar dengan file yang dibuat tepat tengah malam.
Jika kita mengetahui waktu relatif (yaitu kemarin), kita dapat menggunakan find -daystart -mtime 1
, tetapi menemukan file diubah pada tengah malam yang salah, Aug 8 00:00
. Namun, ini sepertinya berhasil:
find dir/ -daystart -mtime +0 \! -mtime +1 -ls
Jika tidak ingin menghitung waktu relatif, dan find
Anda memiliki -newerXY
:
find dir/ -newermt 'Aug 7 00:00' \! -newermt 'Aug 8 00:00' -ls
Sekali lagi, ini membuat file yang dibuat tepat pada tengah malam salah, karena perbandingannya "lebih baru", bukan "lebih baru atau lebih tua". Meskipun jika sistem Anda memiliki presisi subdetik untuk stempel waktu, mungkin sulit untuk mencapainya, tetapi terjadi jika Anda menguji dengan file yang dibuat oleh touch
...
Solusi yang sulit untuk itu adalah seperti ini:
find dir/ -newermt 'Aug 6 23:59:59.999999999' \! -newermt 'Aug 7 23:59:59.999999999' -ls
Bagaimanapun, tambahkan -name "DBG_A_sql*"
yang diperlukan untuk hanya mengambil file dengan nama yang benar. Anda dapat mengganti -ls
di bagian akhir dengan -delete
untuk menghapus file alih-alih daftar. (-ls
, -delete
dan -newerXY
setidaknya ada di GNU find dan BSD find di OS X.)
Tentu saja Anda dapat mengurai representasi teks dari tanggal, tetapi ls
membuatnya sulit untuk diperbaiki jika beberapa joker membuat file dengan karakter yang tidak dapat dicetak di dalamnya. Tentu, file contoh tidak memilikinya, tetapi secara umum, siapa pun dapat membuatnya, terutama di /tmp
.
(Meskipun dengan | xargs rm
Anda hanya akan melewatkan file-file itu, dan karena nama file tidak boleh berisi garis miring, akan sulit bagi siapa pun untuk mengarahkan rm
Anda ke direktori lain.)
Hanya bash loop
for file in /tmp/DBG_A_sql* ; do
[ "$(date -I -r "$file")" == "2016-08-07" ] && rm "$file"
done