我搜索了一段时间并自己尝试了,但到目前为止无法对此进行排序。我的文件夹如下所示,4个文件
1.txt, 2.txt, 3.txt, 4.txt, 5.txt, 6.txt
我想打印文件修改时间并echo
其中的时间戳
#!/bin/bash
thedate= `ls | xargs stat -s | grep -o "st_mtime=[0-9]*" | sed "s/st_mtime=//g"` #get file modified time
files= $(ls | grep -Ev '(5.txt|6.txt)$') #exclud 5 and 6 text file
for i in $thedate; do
echo $i >> $files
done
我想将每个时间戳插入每个文件。但有“模棱两可的重定向”错误。我做错了吗?谢谢
最佳答案
在这种情况下,files
是一个文件“列表”,因此您可能想要添加另一个循环来逐一处理它们。
您的描述有点令人困惑,但如果您打算将每个 文件的最后修改日期附加到该文件,您可以执行以下操作:
for fspec in [1-4].txt ; do
stat -c %y ${fspec} >>${fspec}
done
请注意,我使用 stat -c %y
获取修改时间,例如 2017-02-09 12:21:22.848349503 +0800
- 我是不确定您使用的 stat
是什么变体,但我的没有 -s
选项。你仍然可以使用你的选项,你只需要确保它依次在 each 文件上完成,可能类似于(在上面的 for
循环中):
stat -s ${fspec} | grep -o "st_mtime=[0-9]*" | sed "s/st_mtime=//g" >>${fspec}
关于linux - bash 循环文件回显到目录中的每个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42151161/