具有匹配日期的 linux touch 文件

标签 linux sed

我有一堆文件夹,里面有很多组文件,文件名匹配,扩展名不同,例如

foo.a
foo.b
foo.c
bar.a
bar.b
bar.c
baz.a
baz.b
baz.c

扩展名为 .a 的文件具有正确的日期,但我需要设置具有相同文件名的其他文件的修改日期以匹配。我可以列出所有扩展名为 .a 的文件并像这样修剪它

find -name '*.a'| sed 's/\(.*\)\..*/\1/'

我知道它会涉及“touch --reference”,但就我所知。帮忙?

最佳答案

尝试:

for f in *.a; do touch -r "$f" "${f%.a}".*; done

工作原理:

  • for f in *.a;做

    这将遍历所有扩展名为 .a 的文件

  • touch -r "$f""${f%.a}".*

    使用 f 作为引用文件,这会更改目录中仅扩展名不同的所有其他文件的日期。

  • 完成

    这标志着 for 循环的结束。

关于具有匹配日期的 linux touch 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28574327/

相关文章:

regex - 使用 grep 或 sed 的正则表达式不起作用

linux - ffmpeg 将任何文件转换为任何文件

c++ - 如何在 C++ 中使用 FANN

linux - 虚拟地址空间

linux - 如何替换 CSV 文件中的所有换行符,包括最后一个

linux - 在不换行的情况下将文本附加到文件

macos - '+' (one or more occurrences) not working with ' sed'命令

c# - 如何从文件中删除\n 字符?

64 位 Linux 上的 Java 线程堆栈大小

linux - 如何在 bash 中一个一个地读取 ls 命令列出的文件?