Miễn là bạn là chủ sở hữu của tệp (hoặc root), bạn có thể thay đổi thời gian sửa đổi của tệp bằng touch
lệnh:
touch filename
Theo mặc định, điều này sẽ đặt thời gian sửa đổi của tệp thành thời gian hiện tại, nhưng có một số cờ, chẳng hạn như -d
cờ để chọn một ngày cụ thể. Vì vậy, ví dụ, để đặt một tệp là được sửa đổi hai giờ trước khi hiện tại, bạn có thể sử dụng như sau:
touch -d "2 hours ago" filename
Thay vào đó, nếu bạn muốn sửa đổi tệp liên quan đến thời gian sửa đổi của tệp, thì sau đây nên thực hiện thủ thuật:
touch -d "$(date -R -r filename) - 2 hours" filename
Nếu bạn muốn sửa đổi một số lượng lớn tệp, bạn có thể sử dụng như sau:
find DIRECTORY -print | while read filename; do
# do whatever you want with the file
touch -d "$(date -R -r "$filename") - 2 hours" "$filename"
done
Bạn có thể thay đổi các đối số để find
chỉ chọn các tệp bạn quan tâm. Nếu bạn chỉ muốn cập nhật thời gian sửa đổi tệp so với thời điểm hiện tại, bạn có thể đơn giản hóa việc này thành:
find DIRECTORY -exec touch -d "2 hours ago" {} +
Biểu mẫu này không khả dụng với phiên bản tương đối thời gian của tệp vì nó sử dụng trình bao để tạo các đối số touch
.
Theo thời gian tạo, hầu hết các hệ thống tệp Linux không theo dõi giá trị này. Có một ctime
liên kết với các tệp, nhưng nó theo dõi khi siêu dữ liệu tệp được thay đổi lần cuối. Nếu tệp không bao giờ có quyền thay đổi, nó có thể xảy ra để giữ thời gian tạo, nhưng đây là một sự trùng hợp. Thay đổi hoàn toàn thời gian sửa đổi tệp được tính là thay đổi siêu dữ liệu, do đó cũng sẽ có tác dụng phụ là cập nhật ctime
.
touch -d "2 hours ago" /path/*.txt
ví dụ.