Tak długo, jak jesteś właścicielem pliku (lub użytkownika root), możesz zmienić czas modyfikacji pliku za pomocą touch
polecenia:
touch filename
Domyślnie ustawi to czas modyfikacji pliku na bieżący czas, ale istnieje wiele flag, takich jak -d
flaga, aby wybrać konkretną datę. Na przykład, aby ustawić plik jako zmodyfikowany na dwie godziny przed teraźniejszością, możesz użyć:
touch -d "2 hours ago" filename
Jeśli zamiast tego chcesz zmodyfikować plik w stosunku do jego istniejącego czasu modyfikacji, wykonaj następujące czynności:
touch -d "$(date -R -r filename) - 2 hours" filename
Jeśli chcesz zmodyfikować dużą liczbę plików, możesz użyć następujących opcji:
find DIRECTORY -print | while read filename; do
# do whatever you want with the file
touch -d "$(date -R -r "$filename") - 2 hours" "$filename"
done
Możesz zmienić argumenty, aby find
wybrać tylko te pliki, które Cię interesują. Jeśli chcesz tylko zaktualizować czasy modyfikacji plików w stosunku do chwili obecnej, możesz to uprościć, aby:
find DIRECTORY -exec touch -d "2 hours ago" {} +
Ten formularz nie jest możliwy w przypadku wersji zależnej od czasu pliku, ponieważ używa powłoki do formowania argumentów touch
.
Jeśli chodzi o czas tworzenia, większość systemów plików Linux nie śledzi tej wartości. Jest ctime
powiązany z plikami, ale śledzi, kiedy metadane pliku zostały ostatnio zmienione. Jeśli uprawnienia do pliku nigdy się nie zmieniają, może się zdarzyć, że zatrzyma czas utworzenia, ale to przypadek. Jawna zmiana czasu modyfikacji pliku jest liczona jako zmiana metadanych, więc będzie również miało efekt uboczny aktualizacji ctime
.
touch -d "2 hours ago" /path/*.txt
na przykład.ctime
nie jest możliwa w żaden standardowy sposób.ctime
czasie zmiany metadanych pochodzą z POSIX. Nie wiem, czy fragmenty powłoki w mojej odpowiedzi działałyby ze ścisłymi narzędziami powłoki POSIX. Ale zdecydowanie działają na Ubuntu, który jest kontekstem dla odpowiedzi na tej stronie.gtouch
za pośrednictwembrew install coreutils
.Dzięki za pomoc. To działało dla mnie:
W terminalu przejdź do katalogu do edycji daty. Następnie wpisz:
Zobaczysz „>” po wciśnięciu Enter, z wyjątkiem ostatniego -> „gotowe”.
Uwaga: możesz zmienić „201203101513”
„201203101513” = to data, dla której chcesz mieć wszystkie pliki w tym katalogu.
Zobacz moją stronę
źródło
.ss
gdzie ss jest liczbą sekund. (Uwaga: nie wydaje się, aby kontrolowało taktowanie sekundowe, takie jak nanosekundy lub milisekundy, które dla mnie wyglądały jak zera; jednak ta różnica była dopuszczalna w moim przypadku użycia).Najłatwiejszy sposób - dostęp i modyfikacja będą takie same:
Gdzie:
Jeśli chcesz użyć,
NOW
po prostu upuść-t
znacznik czasu i.Aby sprawdzić, czy wszystkie są takie same:
stat fileName.ext
Zobacz: dotknij człowieka
źródło
touch
flag nie doprowadziła do poprawnego wyniku. Data modyfikacji jest dostosowana, ale data zmiany i dostępu została zmieniona na TERAZchanged
czasem amodified
znacznikami czasu?Dotyk może sam odwoływać się do daty pliku, nie trzeba dzwonić
date
ani zastępować poleceń. Oto trochę ze strony informacyjnej dotyku:Na przykład, aby dodać 8 godzin do daty pliku (nazwa
file
cudzysłowu tylko w przypadku spacji itp.):Używając pętli do wszystkich plików w bieżącym katalogu:
Słyszałem, że używanie a
*
ifor
wybieranie samych nazw plików jest bezpieczniejsze , ale używaniefind -print0 | xargs -0 touch ...
powinno obsługiwać większość szalonych znaków, takich jak znaki nowej linii, spacje, cytaty, ukośniki odwrotne w nazwie pliku. (PS. Przede wszystkim staraj się nie używać zwariowanych postaci w nazwach plików).Na przykład, aby znaleźć wszystkie pliki, w
thatdir
których nazwy plików rozpoczynają się ods
, i dodać jeden dzień do zmodyfikowanego znacznika czasu tych plików, użyj:źródło
Ten mały skrypt przynajmniej dla mnie działa
źródło
Minęło dużo czasu, odkąd napisałem jakiś program uniksowy, ale przypadkowo ustawiłem rok niepoprawnie na kilku zdjęciach świątecznych i wiedziałem, że jeśli nie zmienię daty z 2015 na 2014, to będzie problem później .
Być może jest to łatwe zadanie, ale nie znalazłem żadnego prostego sposobu, aby to zrobić.
Zmodyfikowałem znaleziony tutaj skrypt, który pierwotnie wykorzystano do modyfikacji daty o minus jeden miesiąc.
Oto oryginalny skrypt:
Oto mój zmodyfikowany skrypt, który wymusił datę na rok „2014”:
Teraz zdaję sobie sprawę, że mogłem zrobić bardziej ogólną wersję:
Aby użyć tego pliku, musisz go napisać i
wykonać:
fn = twoja-nazwa-pliku-to-to-twoje-polecenie
Przykład
zmieni datę o minus jeden rok w katalogu, w którym jesteś.
źródło
wystarczy zmienić datę i godzinę w ustawieniach. następnie zapisz plik, zmieni się on automatycznie
źródło