linux – 文件名最后修改日期shell在脚本

linux – 文件名最后修改日期shell在脚本,第1张

概述我使用bash构建一个脚本,我将在变量中获取文件名,然后使用此变量获取最后修改日期的文件unix. 我需要得到这个修改日期值,我不能使用stat命令. 你知道有什么办法可以使用通用的* nix命令吗? 为什么不应该使用ls: 解析ls is a bad idea.不仅文件名中某些字符的行为未定义和平台依赖,为了您的目的,这将是mess with dates when they’re six mon 我使用bash构建一个脚本,我将在变量中获取文件名,然后使用此变量获取最后修改日期的文件unix.

我需要得到这个修改日期值,我不能使用stat命令.

你知道有什么办法可以使用通用的* nix命令吗?

解决方法 为什么不应该使用ls:

解析ls is a bad idea.不仅文件名中某些字符的行为未定义和平台依赖,为了您的目的,这将是mess with dates when they’re six months in the past.总之,是的,它可能适用于您在有限的测试.它不会与平台无关(所以没有可移植性),并且解析的行为不能得到保证,因为在各种系统上的“合法”文件名范围. (Ext4,例如allows spaces and newlines in filenames).

说完这些,亲自,我会使用ls,因为它是快速和容易的;)

编辑

正如Hugo在评论中指出的那样,OP不想使用stat.此外,我应该指出,下面的部分是BSD-stat特定的(当我在Ubuntu上测试时,%Sm标志不起作用;如果您对它有兴趣,linux有一个stat命令,请阅读man page).

所以,非stat解决方案:使用日期

日期,至少在linux上,有一个标志:-r,根据man page:

display the last modification time of file

所以,脚本解决方案将类似于:

date -r ${MY_file_VARIABLE}

这会给你类似的东西:

zsh% date -r Myfile.fooThu Feb 23 07:41:27 CST 2012

解决OP的意见:

If possible with a configurable date format

日期有一个相当广泛的时间格式变量;阅读手册页了解更多信息.

我不是100%确定所有“类UNIX系统”中的便携式日期.对于基于BSD(如OS X),这将不起作用; BSD-date的-r标志完全不同.这个问题并没有“明确指出解决方案的可移植性”.对于基于BSD的解决方案,请参见下面的部分;)

一个更好的解决方案,BSD系统(在OS X上测试,使用BSD-stat; GNU stat略有不同,但可以以相同的方式工作).

使用统计您可以使用-f标志格式化stat的输出,您可以选择仅显示文件修改数据(对于该问题,这是很好的).

例如,stat -f“%m%t%Sm%N”./*:

1340738054  Jun 26 21:14:14 2012 ./build1340738921  Jun 26 21:28:41 2012 ./build.xml1340738140  Jun 26 21:15:40 2012 ./lib1340657124  Jun 25 22:45:24 2012 ./tests

第一位是UNIX epoch time,日期是文件修改时间,其余的是文件名.

示例命令的细分

stat -f“%m%t%Sm%N”./*

> stat -f:call stat,并指定格式(-f).
>%m:UNIX时代.
>%t:输出中的标签分隔符.
>%Sm:S表示将输出显示为字符串,m表示使用文件修改数据.
>%N:显示相关文件的名称.

您的脚本中的命令如下:

stat -f "%sm" ${file_VARIABLE}

会给你输出如:

Jun 26 21:28:41 2012

请阅读man page了解更多信息;时间戳格式由strftime完成.

总结

以上是内存溢出为你收集整理的linux – 文件名最后修改日期shell在脚本全部内容,希望文章能够帮你解决linux – 文件名最后修改日期shell在脚本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048403.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存