Selama Anda adalah pemilik file (atau root), Anda dapat mengubah waktu modifikasi file menggunakan touch
perintah:
touch filename
Secara default ini akan mengatur waktu modifikasi file ke waktu saat ini, tetapi ada sejumlah flag, seperti -d
flag untuk memilih tanggal tertentu. Jadi misalnya, untuk mengatur file sebagai diubah dua jam sebelum sekarang, Anda dapat menggunakan yang berikut:
touch -d "2 hours ago" filename
Jika Anda ingin memodifikasi file relatif terhadap waktu modifikasi yang ada sebagai gantinya, berikut ini harus melakukan trik:
touch -d "$(date -R -r filename) - 2 hours" filename
Jika Anda ingin memodifikasi sejumlah besar file, Anda dapat menggunakan yang berikut ini:
find DIRECTORY -print | while read filename; do
# do whatever you want with the file
touch -d "$(date -R -r "$filename") - 2 hours" "$filename"
done
Anda dapat mengubah argumen untuk find
memilih hanya file yang Anda minati. Jika Anda hanya ingin memperbarui waktu modifikasi file relatif terhadap waktu sekarang, Anda dapat menyederhanakan ini ke:
find DIRECTORY -exec touch -d "2 hours ago" {} +
Formulir ini tidak dapat dilakukan dengan versi relatif waktu file karena menggunakan shell untuk membentuk argumen touch
.
Sejauh waktu pembuatan, kebanyakan sistem file Linux tidak melacak nilai ini. Ada yang ctime
terkait dengan file, tetapi melacak ketika metadata file terakhir diubah. Jika file tidak pernah memiliki izinnya diubah, itu mungkin terjadi untuk menahan waktu pembuatan, tetapi ini adalah suatu kebetulan. Secara eksplisit mengubah waktu modifikasi file dianggap sebagai perubahan metadata, sehingga juga akan memiliki efek samping memperbarui ctime
.
touch -d "2 hours ago" /path/*.txt
misalnya.ctime
tidak mungkin dengan cara standar apa pun.ctime
sebagai waktu perubahan metadata berasal dari POSIX. Saya tidak tahu apakah fragmen shell dalam jawaban saya akan bekerja dengan utilitas shell POSIX yang ketat. Tetapi mereka pasti bekerja di Ubuntu, yang merupakan konteks untuk jawaban di situs ini.gtouch
viabrew install coreutils
.Terima kasih untuk bantuannya. Ini bekerja untuk saya:
Di terminal pergi ke direktori untuk mengedit tanggal. Kemudian ketik:
Anda akan melihat ">" setelah Anda menekan enter, kecuali untuk yang terakhir -> "selesai".
Catatan: Anda mungkin ingin mengubah "201203101513"
"201203101513" = adalah tanggal yang Anda inginkan untuk semua file di direktori ini.
Lihat halaman web saya
sumber
.ss
mana ss adalah jumlah detik. (Catatan: ini tampaknya tidak mengontrol timing sub-detik seperti nanodetik atau milidetik, yang bagi saya hanya muncul sebagai nol; namun, perbedaan ini diizinkan untuk kasus penggunaan saya.)Cara termudah - diakses dan dimodifikasi akan sama:
Dimana:
Jika Anda ingin menggunakan
NOW
cukup jatuhkan-t
dan cap waktu.Untuk memverifikasi semuanya sama:
stat fileName.ext
Lihat: sentuh pria
sumber
touch
bendera mengarah ke hasil yang benar. Tanggal modifikasi disesuaikan, tetapi tanggal yang diubah dan diakses sebenarnya berubah menjadi SEKARANGchanged
waktu danmodified
cap waktu?Sentuhan dapat merujuk tanggal file dengan sendirinya, tidak perlu menelepon
date
atau menggunakan substitusi perintah. Ini sedikit dari halaman info sentuh:Misalnya, untuk menambahkan 8 jam ke tanggal file (nama file yang
file
dikutip hanya untuk spasi, dll):Menggunakan loop atas semua file dalam direktori saat ini:
Saya pernah mendengar bahwa menggunakan a
*
dan membiarkanfor
memilih nama file itu sendiri lebih aman , tetapi menggunakanfind -print0 | xargs -0 touch ...
harus menangani sebagian besar karakter gila seperti baris baru, spasi, kutipan, garis miring terbalik dalam nama file. (PS. Cobalah untuk tidak menggunakan karakter gila dalam nama file di tempat pertama).Misalnya, untuk menemukan semua file
thatdir
dengan nama file yang diawali dengans
, dan menambahkan satu hari ke cap waktu yang diubah file itu, gunakan:sumber
Skrip kecil ini setidaknya berfungsi untukku
sumber
Sudah lama sejak saya menulis segala jenis program Unix, tapi saya tidak sengaja mengatur tahun yang salah pada sekelompok foto Natal, dan saya tahu jika saya tidak mengubah tanggal dari 2015 hingga 2014 itu akan menjadi masalah di kemudian hari .
Mungkin, ini tugas yang mudah, tetapi saya tidak menemukan cara sederhana untuk melakukannya.
Saya memodifikasi skrip yang saya temukan di sini, yang awalnya digunakan untuk mengubah tanggal dengan minus satu bulan.
Ini skrip aslinya:
Inilah skrip saya yang dimodifikasi yang memaksa tanggal hingga tahun "2014":
Sekarang saya sadar saya bisa melakukan versi yang lebih umum:
Untuk menggunakan file ini, Anda harus menulisnya dan
untuk mengeksekusi:
fn = nama file Anda bahwa itu adalah perintah Anda
Contoh
akan mengubah tanggal dengan minus satu tahun di direktori tempat Anda berada.
sumber
cukup ubah tanggal dan waktu dalam pengaturan. lalu simpan file Anda, itu secara otomatis berubah
sumber