我怎样才能改变文件的修改/创建日期?

有没有一种方法可以改变一个文件的修改/创建日期(在Nautilus或ls -l命令中显示)?理想情况下,我正在寻找一个命令,它可以将一大堆文件的日期/时间戳改为提前或延后一定的时间(例如,+8小时或-4天等)。

只要你是文件的所有者(或根),你可以使用touch命令改变文件的修改时间。

touch filename

默认情况下,这将把文件的修改时间设置为当前时间,但也有一些标志,如 "d "标志可以选择一个特定的日期。 因此,举例来说,如果要将一个文件设置为当前时间前两小时的修改,你可以使用下面的方法。

touch -d "2 hours ago" filename

如果你想相对于现有的修改时间来修改文件,那么下面的方法应该可以解决问题。

touch -d "$(date -R -r filename) - 2 hours" filename

如果你想修改大量的文件,你可以使用下面的方法。

find DIRECTORY -print | while read filename; do
    # do whatever you want with the file
    touch -d "$(date -R -r "$filename") - 2 hours" "$filename"
done

你可以把参数改为find,只选择你感兴趣的文件。 如果你只想更新相对于当前时间的文件修改时间,你可以简化为。

find DIRECTORY -exec touch -d "2 hours ago" {} +

这种形式在文件时间相对版本中是不可能的,因为它使用shell来形成touch的参数。

至于创建时间,大多数Linux文件系统并不跟踪这个值。 有一个与文件相关的ctime,但它跟踪文件元数据最后一次被改变的时间。 如果文件的权限从来没有改变过,它可能碰巧持有创建时间,但这是一个巧合。 明确改变文件的修改时间算作元数据的改变,所以也会产生更新`ctime'的副作用。

评论(12)

谢谢你的帮助。 这对我来说很有效。

在终端中进入日期编辑的目录。 然后输入。

find -print | while read filename; do
    # do whatever you want with the file
    touch -t 201203101513 "$filename"
done

你会看到一个">"在你点击回车后,除了最后一次->"完成"。

注意。 你可能想改变"201203101513&quot。

"201203101513"=是你希望这个目录中所有文件的日期。

见我的网页

评论(2)

只需在设置中改变日期和时间,然后保存你的文件,它会自动改变。

评论(5)