Seperti yang ditunjukkan Kos, Mungkin tidak mungkin untuk mengetahui file terlama (sesuai tanggal pembuatan).
Jika waktu modifikasi cocok untuk Anda, dan jika nama file tidak memiliki baris baru:
rm "$(ls -t | tail -1)"
Sepertinya Anda baik-baik saja dengan menghapus file terlama yang dimodifikasi alih-alih file terlama yang dibuat;
Saya menganggap ini sebagai metode teraman, karena tidak akan merusak nama file yang berisi baris baru:
stat --printf='%Y %n\0' * | sort -z | sed -zn '1s/[^ ]\{1,\} //p' | xargs -0 rm
stat --printf='%Y %n\0' *
:mencetak daftar waktu modifikasi terakhir yang dipisahkan NUL diikuti dengan jalur file untuk setiap file di direktori kerja saat ini;sort -z
:mengurutkan daftar menggunakan NUL sebagai pemisah baris;sed -zn '1s/[^ ]\{1,\} //p'
:menghapus kejadian pertama dari string yang berisi satu atau lebih karakter bukan spasi diikuti dengan spasi dari baris pertama yang diakhiri NUL dan mencetaknya;xargs -0 rm
:meneruskan baris yang diakhiri NUL kerm
sebagai argumen;
% touch file1
% touch file2
% stat -c '%Y %n' *
1447318965 file1
1447318966 file2
% stat --printf='%Y %n\0' * | sort -z | sed -zn '1s/[^ ]\{1,\} //p' | xargs -0 rm
% ls
file2
Menggunakan awk untuk menjumlahkan nilai kolom, berdasarkan nilai kolom lain
Mengapa anggur dapat menjalankan program 64bit di Linux tetapi tidak di Mac?