linux - bash 循环文件回显到目录中的每个文件

标签 linux bash shell unix

我搜索了一段时间并自己尝试了,但到目前为止无法对此进行排序。我的文件夹如下所示,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/

相关文章:

linux - 在 linux 中搜索当前目录中名称不包含 "txt"的文件

java - 在 Linux 上交付 Java 软件的最佳方式是什么?

linux - 什么是 Docker 存储驱动

bash - 使用 Bash 将 Keystroke 注入(inject)不同的进程

bash - ${VARIABLE+x} 在 bash 中是什么意思?

c - 实现我自己的 "strings"工具——GNU 字符串找到的缺失序列

linux - shell 脚本 - for 循环 - 根据用户从文件输入的 grep 邮件 ID

c++ - 在 Linux 上为可执行文件创建导入库

linux - 如何使用 Pyinstaller 为 Linux 机器创建可执行文件?

linux - 如何使用 sed 替换退格字符 (\b)?