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.