Mengubah Tanggal Pembuatan file

62

Bisakah Anda memberi tahu saya bagaimana saya dapat mengubah tanggal pembuatan file di Lion. Saya menyadari ada perintah touch-t tetapi itu tidak berhasil di Lion. Beberapa orang telah menyebutkan cara lain, tetapi saya pikir mereka telah menulis solusi dalam bahasa "coder" daripada bahasa awam - akankah seseorang dapat menjawabnya dengan cara yang bisa dilakukan oleh orang awam?

Terima kasih banyak atas bantuanmu.

pengguna55502
sumber
Penjelasan "pembuat kode" yang ditulis orang lain mungkin merupakan referensi untuk "sentuhan". Anda harus membuka Terminal, navigasikan ke folder tempat file tersebut kemudian gunakan perintah sentuh untuk memodifikasi tanggal pembuatan kue.
Derek Knight
2
FWIW Anda berada di garis yang benar dengan "touch-t", tetapi ada ruang antara h dan -. Ini "sentuh -t"
Derek Knight

Jawaban:

95

touch -tbiasanya hanya mengubah waktu modifikasi dan akses. Ini hanya mengubah waktu pembuatan jika waktu target sebelum waktu pembuatan asli.

touch -t 199912312359 file.txt
touch -t $(date -jf %FT%T 1999-12-31T23:59:59 +%Y%m%d%H%M%S) file.txt

SetFile -d selalu mengubah waktu pembuatan.

SetFile -d '12/31/1999 23:59:59' file.txt
SetFile -d "$(GetFileInfo -m test.txt)" file.txt

SetFile adalah bagian dari paket alat baris perintah yang dapat diunduh dari developer.apple.com/downloads atau dari preferensi Xcode.

Lri
sumber
4
-m untuk mengubah waktu modifikasi.
AlikElzin-kilaka
5
Di Yosemite, sentuh mengharuskan saya untuk menggunakan format +%Y%m%d%H%M.%S(perhatikan titik antara menit dan detik)
Calimo
Saya menulis sebuah fungsi yang disebut CpCreationDatedi fish:SetFile -d (GetFileInfo -m $argv[1]) $argv[2]
Pascal
15

Di Mac OS X tampaknya ada empat cap waktu berbeda yang dikaitkan dengan file. Cap waktu ini tidak selalu diupdate secara independen satu sama lain, tapi satu dapat memiliki kontrol individu dengan sedikit perawatan dan dengan penggunaan touch, SetFiledan chown(atau chmod). Untuk melihat ini, mari kita bereksperimen dan membuat file baru dari command prompt #:

# touch a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt

Tanggal pertama yang tercantum adalah waktu akses terakhir ( atime), yang kedua adalah waktu modifikasi terakhir ( mtime), yang ketiga adalah perubahan status terakhir ( ctime), yang keempat adalah waktu pembuatan file (kelahiran, Btime), lihat man lstat.

Untuk mengubah waktu akses ( atime) ke penggunaan waktu tertentu:

# touch -a -t201412312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "May 19 00:11:14 2015" "May 19 00:11:46 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt

Untuk memodifikasi waktu modifikasi ( mtime) dan waktu pembuatan file ( Btime) ke waktu yang ditentukan, gunakan:

# touch -m -t201312312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 2013" 4096 0 0 a.txt

Tampaknya ini juga secara otomatis memperbarui waktu perubahan status terakhir ( ctime) ke waktu sistem saat ini!

Untuk memodifikasi hanya waktu pembuatan / kelahiran ( Btime) ke waktu tertentu, gunakan (seperti yang diusulkan oleh orang lain di atas):

# SetFile -d "12/31/1999 23:59:59" a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt

Untuk mengubah hanya waktu perubahan status terakhir ( ctime) ke waktu sistem saat ini gunakan misalnya:

# chown username a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:13:45 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt

di mana usernamepemilik file (seperti yang dilaporkan oleh statatau ls -l). Ini tidak mengubah kepemilikan file, tetapi mengakses inode file dan mencatat ini sebagai waktu perubahan status terakhir. Sayangnya, tidak mungkin menentukan waktu secara eksplisit di sini selain dengan mengubah waktu komputer ...

Singkatnya, untuk dapat mengubah empat stempel waktu secara independen, seseorang dapat menggunakan (dalam urutan ini untuk 3 terakhir):

  1. touch -a -tCCYYMMDDHH.SS <file>
  2. touch -m -tCCYYMMDDHH.SS <file>
  3. SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
  4. [atur tanggal sistem] chown username <file>[kembalikan ke tanggal sistem normal]

(Tentu saja, mengatur ulang tanggal sistem mungkin bukan operasi bebas risiko, Anda telah diperingatkan.)

armando.sano
sumber
+1 Terima kasih atas jawaban super detail ini. Ini menyelesaikan semua kesengsaraan saya.
Govind Rai
13

Perintah baris touchperintah berfungsi di Lion, tetapi Anda perlu sedikit latar belakang tentang cara menggunakannya.

Pertama, Anda perlu mengetikkannya, itu bukan utilitas yang beroperasi secara grafis di jendela. Tempat Anda mengetikkannya adalah aplikasi bernama Terminal . Anda dapat menemukan ini di folder Utilities Anda, atau gunakan pencarian Spotlight untuk menemukannya.

Setelah Anda memulainya, Anda mendapatkan jendela baris perintah di mana Anda bisa mengetikkan perintah. Hanya karena Anda mengetik bukan berarti ada hubungannya dengan pengkodean, tetapi bagi seseorang yang baru dengan perintah OS "kuno", itu bisa terlihat sedikit menakutkan.

Jadi, perintahnya disebut touch , dan setelah perintah itu Anda bisa melewati berbagai parameter, yang diperlukan hanyalah nama file. Mengetik berikut akan menetapkan tanggal modifikasi file terakhir ke waktu saat ini:

touch filename

Tentu saja, Anda mungkin perlu menemukan file terlebih dahulu, yang bisa memerlukan perintah lebih lanjut untuk mendapatkannya. perintah cd atau Change Directory membantu di sini:

cd ~/Desktop/files/PDFs
touch filename

Atau, Anda bisa menambahkan path lengkap ke file sebagai bagian dari perintah:

touch ~/Desktop/files/PDFs/filename

Penggunaan perintah sentuh yang lebih maju memungkinkan Anda untuk menentukan waktu yang ingin Anda atur, daripada menggunakan waktu saat eksekusi, mengatur akses alih-alih waktu modifikasi dll. Ini adalah parameter seperti -t dan yang lainnya lakukan. Beberapa mengatur waktu menjadi waktu file lain, beberapa mengaturnya untuk kembali, atau meneruskan dalam waktu dengan jumlah X, ( lihat di sini untuk rincian lebih lanjut), misalnya:

touch -d '1 May 2005 10:22' file8

Berikut ini adalah dari halaman ini yang juga merupakan referensi yang berguna, dan contoh yang bagus dengan beberapa tips untuk mereka yang tidak nyaman dengan lokasi file pada baris perintah

Perhatikan bahwa ini akan mengubah tanggal yang diubah dan tanggal yang dibuat hanya atribut jika file Anda dibuat setelah tanggal yang Anda masukkan. Ini karena file tidak dapat diubah sebelum dibuat. Jika dibuat sebelum tanggal yang Anda tetapkan, hanya tanggal yang diubah yang akan diubah.

Bagaimana cara mengubah tanggal dibuat atribut file?

  1. Buka aplikasi Terminal ( /Applications/Utilities/Terminal.app) atau jika Anda lebih suka menggunakan iTerm.

  2. Ketik ini ke Terminal (tanpa menekan enter / return) memasukkan tanggal dalam format YYYYMMDDhhmm:

    touch -t 201212211111
    
  3. Buka jendela Finder dan cari file yang ingin Anda modifikasi dan seret dan letakkan di jendela Terminal, kemudian akan memasukkan lokasi file menggunakan terminologi baris perintah. Berikut ini contoh apa yang harus diketik ke Terminal pada saat ini:

    touch -t 201212211111 /Volumes/Mac\ HD/Pictures/somefile.jpg
    

    201212211111 dalam contoh di atas mewakili “21 Desember 2012 11:11

barang
sumber
2
Tetapi touchmemodifikasi tanggal yang diubah, bukan tanggal pembuatan file.
Daniel
1
Itu bisa melakukan keduanya. Tergantung pada parameternya.
stuffe
2
Menggunakan touchdengan parameter yang Anda berikan di atas mengubah modifikasi tetapi tidak tanggal pembuatan untuk file pengujian saya.
Daniel
2
@ Danielel Anda mungkin mendapat jawaban Anda, tetapi untuk kelengkapan, sake touch tidak mengubah tanggal pembuatan tergantung pada argumen. Jika Anda memberikan tanggal modifikasi sebelum tanggal pembuatan file, tanggal pembuatan akan secara otomatis berubah ke nilai tanggal modifikasi baru, karena file tidak dapat dimodifikasi sebelum dibuat.
Govind Rai
2
Saya baru saja mencoba ini pada Sierra dan sentuh pasti tidak mengubah creationtanggal. Saya dapat mengubah accessdan modifiedtanggal ke "tanggal di masa lalu", tetapi itu tidak mengubah tanggal pembuatan. Periksa halaman manual untuk sentuhan, itu tidak menyebutkan tanggal pembuatan. Sistem file: Mac OS Extended (Journaled, Encrypted). Menggunakan SetFile -d "$(GetFileInfo -m test.txt)" file.txtbekerja dengan sempurna.
Jonathan Cross
7

Petunjuk hebat di sini, khususnya yang terakhir (dari Lauri Ranta, dijawab 21 Agustus pukul 15:21). Perfekt!

Saya sekarang menggunakan Automator Workflow sederhana untuk mengubah banyak file sekaligus:

  1. Dapatkan Item Finder yang Dipilih
  2. Jalankan Shell Script, "Lulus masukan: sebagai argumen"

Script shell adalah:

for f in "$@"
do
    SetFile -d "$(GetFileInfo -m "$f")" "$f" 
done

Ini bekerja seperti pesona.

Claudio Wilmanns
sumber
0

Cara termudah yang saya temukan adalah membuat folder baru, menyalin semua sub-folder dari folder berwarna abu-abu ke dalam folder baru, dan voila, folder baru tidak berwarna abu-abu. Anda bahkan dapat melakukan ini di finder.

Apa yang Akan Menjadi Keren
sumber