Dosyanın Oluşturma Tarihini Değiştirme


62

Lütfen Lion'da bir dosyanın oluşturulma tarihini nasıl değiştirebileceğimi söyler misiniz? Touch-t komutu olduğunu fark ettim ama bu Lion'da çalışmıyor. Birkaç kişi başka bir yoldan bahsetti, ancak çözümü layman dili yerine "kodlayıcı" dilinde yazdıklarını düşünüyorum - birisi bir meslekten olmayan kişinin uygulayabileceği şekilde cevap verebilir mi?

Yardımın için çok teşekkürler.


Diğer kişilerin yazdığı "kodlayıcı" açıklaması muhtemelen "dokunma" için bir referanstır. Bir Terminal açmanız, dosyanın bulunduğu klasöre gitmeniz ve ardından fie'nin oluşturma tarihini değiştirmek için touch komutunu kullanmanız gerekir.
Derek Knight,

2
FWIW "touch-t" ile doğru çizgilerdesiniz, ancak h ve - arasında bir boşluk var. Bu "dokun-t"
Derek Knight

Yanıtlar:


95

touch -tnormalde sadece değişiklik ve erişim zamanlarını değiştirir. Oluşturma zamanını yalnızca, hedef zaman orijinal yaratma zamanından önceyse değiştirir.

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 oluşturma zamanını her zaman değiştirir.

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

SetFile indirilebilir komut satırı araçları paketinin bir parçasıdır developer.apple.com/downloads veya Xcode kendi tercihlerinden.


4
- Değişiklik zamanını değiştirmek için.
AlikElzin-kilaka

5
Yosemite'da, dokunma formatını kullanmamı istedi +%Y%m%d%H%M.%S(dakika ve saniye arasındaki noktayı fark et)
Calimo

Aradım bir fonksiyon yazdım CpCreationDateiçinde fish:SetFile -d (GetFileInfo -m $argv[1]) $argv[2]
Pascal

15

Mac OS X'te bir dosyayla ilişkilendirilmiş dört farklı zaman damgası olduğu görülüyor. Bu zaman damgaları, her zaman birbirlerinden bağımsız olarak güncellenir değildir, ancak bir bakım ile biraz ve kullanımı ile bazı tek tek kontrol sahip olabilir touch, SetFileve chown(veya chmod). Bunu görmek için, komut isteminden deney yapıp yeni bir dosya oluşturalım #:

# 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

Listelenen ilk tarih son erişim zamanıdır ( atime), ikincisi son değişiklik zamanıdır ( mtime), üçüncüsü son durum değişikliğidir ( ctime), dördüncü dosya oluşturma zamanıdır (doğum, Btime), bkz man lstat.

Erişim zamanını ( atime) belirli bir zamana göre değiştirmek için

# 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

Değişiklik zamanını ( mtime) ve dosya oluşturma zamanını ( Btime) belirtilen bir zamana göre değiştirmek için:

# 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

Görünüşe göre bu da otomatik olarak son durum değişikliğini ( ctime) geçerli sistem saatine göre günceller!

Yalnızca yaratma / doğum zamanını ( Btime) belirli bir zamana göre değiştirmek için kullanın (yukarıdaki diğerleri tarafından önerildiği şekilde):

# 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

Yalnızca en son durum değişikliği zamanını ( ctime) geçerli sistem saatine göre değiştirmek için, örneğin:

# 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

usernamedosyanın sahibi nerede ( statveya tarafından bildirildiği gibi ls -l). Bu, dosyanın sahipliğini değiştirmez ancak dosyanın inode'una erişir ve bunu son durum değişikliği zamanı olarak kaydeder. Ne yazık ki, bilgisayarın saatini değiştirmekten başka burada açıkça belirtilmesi mümkün değildir.

Özetle, dört zaman damgasını bağımsız olarak değiştirebilmek için, biri kullanabilir (son 3 sıraya göre):

  1. touch -a -tCCYYMMDDHH.SS <file>
  2. touch -m -tCCYYMMDDHH.SS <file>
  3. SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
  4. [sistem tarihini ayarla] chown username <file>[normal sistem tarihine geri dön]

(Tabii ki, sistem tarihini sıfırlamak, risksiz bir işlem olmayabilir, siz uyardınız.)


+1 Bu süper detaylı cevap için teşekkür ederim. Bu, bütün sıkıntılarımı çözdü.
Govind Rai,

13

Komut satırı touchkomutu Lion'da çalışır, ancak nasıl kullanılacağı hakkında biraz bilgi sahibi olmanız gerekir.

Öncelikle, bunu yazmanız gerekir, bir pencerede grafiksel olarak çalışan bir yardımcı program değildir. Yazdığınız yer Terminal adlı bir uygulama . Bunu Utilities klasöründe bulabilir veya bulmak için Spotlight aramasını kullanabilirsiniz.

Başladıktan sonra, komutları yazabileceğiniz bir komut satırı penceresi alırsınız. Sırf yazdığınız için kodlama ile ilgisi olduğu anlamına gelmez, ancak "eski moda" işletim sistemi komutlarında yeni olan biri için biraz korkutucu görünebilir.

Bu nedenle, komut dokunma olarak adlandırılır ve komuttan sonra çeşitli parametreler geçebilirsiniz, bunlardan sadece biri dosya adıdır. Aşağıdakileri yazmak, dosyanın son değiştirilme tarihini geçerli saate ayarlar:

touch filename

Elbette, önce dosyayı bulmanız gerekebilir; bu dosyaya ulaşmak için daha fazla komut gerektirebilir. cd veya değiştirme Dizin komut burada yardımcı olur:

cd ~/Desktop/files/PDFs
touch filename

Veya, dosyaya tam yolu komutun bir parçası olarak ekleyebilirsiniz:

touch ~/Desktop/files/PDFs/filename

Dokunma komutunun daha gelişmiş kullanımı, yürütme süresini kullanmak yerine, değişiklik zamanları yerine erişimi ayarlamak vb. İstediğiniz zamanı belirlemenizi sağlar . -T ve diğerleri gibi parametreler budur . Bazıları zamanı başka bir dosyanın zamanı, bazıları da geriye veya ileriye doğru X miktarına göre ayarlar ( örneğin daha fazla bilgi için buraya bakınız).

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

Aşağıdakiler aynı zamanda faydalı bir referans olan bu sayfadan ve komut satırındaki dosya konumlarından rahatsızlık duyanlar için bazı ipuçlarından oluşan harika bir örnek

Bunun hem değiştirilen tarihi hem de oluşturulan tarihi özelliklerini değiştireceğini unutmayın, ancak dosyanız girdiğiniz tarihten sonra oluşturulduysa. Bunun nedeni, bir dosyanın oluşturulmadan önce değiştirilememesidir. Belirlediğiniz tarihten önce oluşturulduysa, yalnızca değiştirilen tarih değiştirilecektir.

Bir dosyanın oluşturduğu tarihi nasıl değiştirebilirim?

  1. Terminal uygulamasını açın ( /Applications/Utilities/Terminal.app) veya iTerm'i kullanmayı tercih ediyorsanız.

  2. Tarihi aşağıdaki biçimde ekleyerek Terminal'e yazın (enter / return tuşuna basmadan) YYYYMMDDhhmm:

    touch -t 201212211111
    
  3. Bir Finder penceresi açın ve değiştirmek istediğiniz dosyayı bulun ve Terminal penceresine sürükleyip bırakın, ardından komut satırı terminolojisini kullanarak dosya konumunu ekleyecektir. İşte bu noktada Terminale ne yazılması gerektiğine dair bir örnek:

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

    Yukarıdaki örnekte yer alan 201212211111 “21 Aralık 2012 11:11


2
Ancak touch, dosyanın oluşturulma tarihini değil, değiştirilen tarihi değiştirir.
Daniel

1
Her ikisini de yapabilir. Parametrelere bağlı.
Ağustos'ta

2
touchYukarıda verdiğiniz parametreleri kullanarak , değişiklik yaptım ancak test dosyamın oluşturulma tarihini değiştirmedim.
Daniel

2
@Daniel Sen probablly cevabın hazır, ancak tamlık aşkına touch yapar argümanlar bağlı oluşturma tarihini değiştirin. Dosyanın oluşturulma tarihinden önceki bir değişiklik tarihi verirseniz, oluşturma tarihi bir dosya oluşturulmadan önce değiştirilemediğinden otomatik olarak yeni değişiklik tarihi değerine değiştirilir.
Govind Rai

2
Sadece Sierra bu denenmiş ve dokunmatik kesinlikle gelmez değiştirmek creationtarihini. "Geçmişteki bir tarih" olarak değiştirebildim accessve modifiedtarihler koydum, ancak oluşturma tarihi değiştirilmedi. Dokunma için man sayfasını kontrol edin, yaratma tarihinden söz etmez. Dosya sistemi: Mac OS Extended (Günlüklü, Şifreli). Kullanarak SetFile -d "$(GetFileInfo -m test.txt)" file.txtmükemmel çalıştı.
Jonathan Cross

7

Greats burada, özellikle sonuncusunda ipucu veriyor (Lauri Ranta'dan 21: 21'de 21 Ağustos'ta cevap verdi). Perfekt!

Şimdi toplu olarak birden fazla dosyayı değiştirmek için basit bir Automator Workflow kullanıyorum:

  1. Seçilen Bulucu Öğelerini Alın
  2. Shell Script'i çalıştırın, "Pass girişi: argümanlar olarak"

Kabuk betiği:

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

Bu bir cazibe gibi çalışır.


0

Bulduğum en kolay yol yeni bir klasör oluşturmak, grileştirilmiş klasörün tüm alt klasörlerini yeni klasöre kopyalamak ve işte, yeni klasör grileşmiyordu. Bunu bulucuda bile yapabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.