添加修改日期的文件名并将其分配给变量

添加修改日期的文件名并将其分配给变量

我想在 Unix 目录中找到一个文件,如果存在,我想将文件名及其修改后的时间戳分配给如下变量

variable=(find the file name, if exist add the filename with _a string _and modified time stamp)

是否可以?它应该看起来像filename_string_modifieddate(yyyymmdd)

答案1

尝试这个:

variable=`find . putYourConditionHere -exec ls -l --time-style +(%Y%m%d): {} \;|sed 's/.*\(([0-9]*)\): \(.*\)/\2_string_modifieddate\1/'`

因此,您用来find查找文件,使用选项-execexecls对其进行选择--time-style以获得所需的格式,最后sed获得正确的顺序。将其传递给您的变量。

:在日期中包含了 ,因为文件名不能包含它。否则,对于包含类似()或 之类的文件名,脚本将失败(42)

答案2

var=$(find -name yourfile -prune -printf '%f_%TY%Tm%Td\n')

这将varyourfile_yyyymmdd iff您存在的文件填充 shell 变量。

如果您find不明白上述内容,printf primitives您可以按以下方式执行此操作:

var=$(find -name yourfile -prune -exec sh -c 'printf "%s_%s\n" "$1" "$(stat -c "%y" "$1" | cut -d " "-f1 | tr -d "-")"' {} {} \;)

相关内容