我想在 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
查找文件,使用选项-exec
execls
对其进行选择--time-style
以获得所需的格式,最后sed
获得正确的顺序。将其传递给您的变量。
我:
在日期中包含了 ,因为文件名不能包含它。否则,对于包含类似()
或 之类的文件名,脚本将失败(42)
。
答案2
var=$(find -name yourfile -prune -printf '%f_%TY%Tm%Td\n')
这将var
用yourfile_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 "-")"' {} {} \;)