我旋转了 MP4 视频,在此过程中丢失了文件的正确元数据和时间戳。
有没有办法将元数据和时间戳从原始(未旋转)文件复制到新文件。(请注意,我不是问如何复制保留时间戳的文件,而是如何将此信息传输到另一个文件。)
我旋转了 MP4 视频,在此过程中丢失了文件的正确元数据和时间戳。
有没有办法将元数据和时间戳从原始(未旋转)文件复制到新文件。(请注意,我不是问如何复制保留时间戳的文件,而是如何将此信息传输到另一个文件。)
在我的操作系统中
date
Tue 01 Nov 2022 06:58:10 PM HKT
获取unix时间戳
date +%s
1667300297
获取UTC时间。
date -u
Tue 01 Nov 2022 10:58:08 AM UTC
如果我将变量分配为 UTC 时间
x=$(date -u)
那么如何获取变量的时间戳呢?
$x +%s
bash: Tue: command not found
我有一个运行 Linux(busybox 1.32.0)的安全摄像头,我可以将其设置为在文件夹结构中以(可配置的)30 秒块连续录制视频:
recording/2022/04/26/15/2022-04-26-15-30-00.mp4
在另一个文件夹中,仅在检测到运动时才会记录静态图像:
stills/2022/04/26/15/2022-04-26-15-30-05.jpg
这是我为在检测到运动之前获取视频而设计的一种解决方法。
由于可用空间有限,我想删除任何在运动前 60 秒和运动后 120 秒以上开始的视频,以便为每个静止图像保留一些前后视频。
静止图像可能每 5 秒出现一次,因为它们基于运动触发而不是预定义的间隔。
当然,对于一个单一的图像,运行“查找”和适当的选项是一个问题,但是我更复杂的用例呢?
我想了一些可能的方法,但我不确定如何进行。
我考虑过每天运行一个脚本,列出前一天的元素(录音和静止图像),将文件名转换为每个元素的时间戳,然后迭代地将时间戳与静止图像的时间戳进行比较。
这将涉及 4 个列表(文件名、时间戳、录音和剧照),并且在我看来非常参与(可能是因为我不熟悉 shell 脚本),那么有没有更简单的方法呢?
涉及 python 或 perl 的解决方案需要为平台编译它,并且可能会给 CPU 带来过高的负载,更不用说设备上的可用空间已经有限,并且 samba 4.x 可执行文件已经无法适应。
可用的工具是busybox 的一部分以及项目网站中列出的二进制文件。
我正在将 Asterisk 通话录音从我们的主服务器复制到 samba 共享,并且创建日期和时间已更改为当前日期和时间。
文件格式为:in-xxxxxxxxxx-xxxxxxxxxx-20211020-162749-1634761669.7921917.wav
粗体部分在 EPOCH 时间。我有数百个这样的文件,我需要根据文件名中的 EPOCH 时间戳更改文件的创建日期。谁能帮我?
我有一个第 3 方 SFTP 服务器,我想在其上检查一些文件时间戳。
但是,如果我使用ls -l
vs. ,我确实会为同一个文件得到不同的结果ls -lh
:
sftp> ls -l
[...]
-rwxrwxrwx 1 0 0 1963 Nov 15 08:49 foo.txt
[...]
sftp> ls -lh
[...]
-rwxrwxrwx 0 0 0 1.9K Nov 15 07:49 foo.txt
[...]
sftp> ls -l foo.txt
-rwxrwxrwx 0 0 0 1963 Nov 15 07:49 foo.txt
sftp> ls -lh foo.txt
-rwxrwxrwx 0 0 0 1.9K Nov 15 07:49 foo.txt
如您所见,时间戳 inls -l
是08:49
而其他命令具有07:49
. 服务器在德国,目前比 UTC 晚 1 小时,所以我的猜测是07:49
UTC 而08:49
柏林时间。
但是,我的机器是 UTC:
$ cat /etc/timezone
Etc/UTC
我的理解是,根据 SFTP 标准,所有时间戳都应该是 UTC。但是我不确定这种理解是否正确(鉴于标准有很多不同的版本)。我也不知道该sftp
工具是否以某种方式对时间戳进行了后处理(man sftp
根本没有提到时区或时间戳)。
造成这种差异的原因可能是什么?
问题
我想将 tldr 的输出复制到剪贴板,然后将其粘贴到文本编辑器。
我执行:tldr pwd | xclip -sel clip
当我从剪贴板粘贴时,我得到:
pwd
[0mPrint name of current/working directory.More information: https://www.gnu.org/software/coreutils/pwd.
- [23;22;24;25;32mPrint the current directory:
[23;22;24;25;33m pwd
[0m
- [23;22;24;25;32mPrint the current directory, and resolve all symlinks (i.e. show the "physical" path):
[23;22;24;25;33m pwd -P
[0m[0m
我想摆脱时间戳,也想知道为什么会这样。
观察
tldr pwd
(不传递到 xclip)不显示时间戳man pwd | xclip -sel clip
粘贴时不包括时间戳环境
假设你有file
一个给定的文件mtime
。如果我创建一个通过符号链接sym
指向的符号链接,它本身会得到一个与创建时间相对应的-stamp,这与of 不同。file
ln -s
mtime
symlink
mtime
file
那么有没有办法创建一个符号链接,使其与mtime
它指向的文件相同?
这个问题的背景是这个脚本,其中创建了一个指向云镜像的n个最新文件的链接目录。现在,例如,如果我ls -lt
在此current
目录中执行此操作,它不会显示创建实际文件的日期,而是显示创建符号链接的日期。但我想查看文件创建日期。
编辑 在我原来的帖子中,我错误地要求 ctime(我在上面更改了它),但是问题应该是关于 mtime。感谢@ilkkachu 指出这一点。
我需要将mm-dd-YY
字符串转换为 UNIX 时间戳以用于 HubSpot 的 API。所述 API 要求将日期设置为 UTC 午夜。
我可以使用以下方法转换日期:date -j -f "%m-%d-%Y" "01-20-2013" "+%s"
但是如何将“午夜 UTC”组件附加到输出中?
在 shell 脚本中,有以下变量:
datestamp=$(date '+%Y-%m-%d_T%H-%M-%S')
datestamp_pretty=$(date '+%m/%d/%Y at %I:%M:%S %p')
第一个用作输出文件名的一部分,而第二个用于在文件内容中显示可读性好的日期和时间。由于这些是单独创建的,因此秒数可能会略有下降。有没有办法创建一个日期变量,然后以两种不同的方式对其进行格式化?如果是这样,这是如何完成的?
当符号链接比原始文件旧时,有没有办法使用传统命令更新符号链接?
我使用 Seafile 服务器(类似于 Dropbox)将某些文件提供给我的学生。所以我共享了一个目录并创建了指向这些文件的链接。Seafile 和 Dropbox 都不关心链接并将实际文件复制到服务器。
问题是如果我更新实际文件,链接时间戳不会改变,新版本的文件也不会上传到服务器。
我尝试了简单的测试:
[ ./shared/the-symlink -ot ./actualfiles/pontedfile ] && touch -h ./shared/the-symlink
不幸的是,test
取消引用链接并将文件的时间戳与自身进行比较,结果当然是错误的。
另请注意,符号链接必须比链接文件更新。我不需要将其设置为相同的时间戳。
有没有办法test
检查链接的时间戳而不是指向的文件?
我试图避免的其他解决方案:
touch
使用所有符号链接也可以,但是所有文件都会一次又一次地复制到服务器;(不是问题:见下面的编辑)我愿意一个比将时间戳转换为字符串并自己比较它们更优雅的解决方案......
这对我来说不是解决方案。
编辑:
这不是问题的答案,但它是我的问题的解决方案:touch -h *
更新所有符号链接时间戳。Seafile 识别出这种变化并采取行动。幸运的是,它现在使用实际的文件时间戳重新检查并仅上传更改的文件。
编辑2:
使用stat
工作的解决方案:stat -c "%Y"
. 感谢史蒂夫。