有没有办法更改修改/创建文件的日期(在 Nautilus 中或使用 ls -l 命令显示)?理想情况下,我正在寻找一个命令,它可以将一大堆文件的日期/时间戳更改为更早或更晚的特定时间(例如 +8 小时或 -4 天等)。
有什么办法可以从 bash 历史记录中查看命令是在什么时间执行的?我们可以看到订单,但有什么办法我也能得到时间吗?
底线:Bash 历史中的执行时间
我需要复制文件,然后我需要将时间戳属性更改为原始文件。我怎样才能用终端或任何其他方式做到这一点?
如主题:我想删除在特定日期范围内修改过的目录中的文件。我怎样才能做到这一点 ?
在阅读 Linux 时,我得到了以下信息:
touch 提供了几个选项,但这里有一个有趣的选项:
-t 选项允许您设置文件的日期和时间戳。要将时间戳设置为特定时间:
Run Code Online (Sandbox Code Playgroud)$ touch -t 03201600 myfile这会将文件 myfile 的时间戳设置为 3 月 20 日 (03 20 1600) 下午 4 点。
在这里,我没有理解 03201600 --> 3 月 20 日下午 4 点背后的逻辑。
我正在尝试获取在特定时间段之间修改的文件列表,如本答案中所述。
我将日期和时间存储在两个变量 [nn 和 nn1(愚蠢的命名)] 中并尝试使用find命令。我收到以下错误 -
vikram@vikram-Studio-XPS-1645:~$ echo $nn1
10-04-12 23:26:48
vikram@vikram-Studio-XPS-1645:~$ echo $nn
10-05-12 00:26:48
vikram@vikram-Studio-XPS-1645:~$ find . -newermt $nn -and -not -newermt $nn1 -print
find: paths must precede expression: 00:26:48
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
vikram@vikram-Studio-XPS-1645:~$
Run Code Online (Sandbox Code Playgroud)
为什么会出现这个错误??
我最近在我的网络上安装了 Synology DiskStation。我使用 Nautilus 3.4.2 中的“浏览网络”按钮从 Ubuntu 12.04.1 计算机安装它。它在 Nautilus 中显示为 afp://randall@DiskStation.local/photo/。
到现在为止还挺好。然后我上传了很多照片,所有的修改时间都长达几个月。当我查看 DiskStation 上的照片目录时,它们都有复制时的修改时间,而不是源计算机上的修改时间。在 DiskStation 上按日期对它们进行排序就到此为止了。
有没有办法重新复制文件但保留其修改日期?也许我以错误的方式安装了 DiskStation。也许 Nautilus 是错误的工具。有什么建议?
顺便说一句,我已经从 Ubuntu 10.04、10.10、11.04 和 11.10 通过 SMB/CIFS 将千兆字节的照片移动到不同的 NAS(Plextor PX-EH),并且完全保留了修改时间。问题一定出在 Synology 或某些 Ubuntu 12.04 软件上。
我按时间顺序有 dat 文件的名称:
FileName_YYYY_MM_DD_HHMM.dat
Run Code Online (Sandbox Code Playgroud)
是否有任何命令可以为每个时间戳添加 30 分钟?
每当我访问文件时,我的文件的最后访问时间戳每 24 小时更新一次。例如,我输入“ls”,如果文件的上次访问时间戳早于 24,则它会更新为当前日期。
有没有其他人有同样的现象,知道是什么原因造成的。我有一个SSD,也许与此有关。
我需要将我正在运行的命令的输出重定向到带有时间戳的日志文件(因此是一个函数而不是日志文件本身),但错误和输出都不应该显示在控制台中。下列 -
command | my_func 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
不管用。
就像是
command 2> logfile
Run Code Online (Sandbox Code Playgroud)
有效,但我无法在第二种情况下记录时间戳。我该怎么办?