首页 > 解决方案 > 如何显示所有同名文件的日期?

问题描述

我在目录树中有多个同名文件。如何显示所有这些文件的日期?奖励:按日期对列表进行排序。

标签: shell

解决方案


假设您在当前目录中有file.txt,并且它也存在于“目录”子目录中。您可以尝试这样的事情:

find . -name file.txt | xargs stat -c '%.10y , %n'

2020-10-07 , ./directory/file.txt
2020-10-07 , ./file.txt

将 file.txt 替换为您的文件名。

  • '%.10y' 将显示 %y 的前 10 个符号(最后修改时间)。
  • %n 将显示文件名和路径。

您还可以使用 ls 和 awk:

find . -name file.txt | xargs ls -l | awk {'print $6,7,$9'}

Oct 7 ./directory/file.txt
Oct 7 ./file.txt
  • $6,$7 将显示日期。
  • $9 将显示文件名。

更新:如果你想排序,你可以像这样编辑第一个命令:

find . -name test.txt | xargs stat -c '%.10y , %n' | sort -k1
  • “sort -k1”将按第一列对输出进行排序。

由于日期的格式,第二个命令会更棘手。

更新:如果文件/目录中有空格,事情就会中断。这是一种解决方法:

find . -name file.txt | while read LINE; do stat -c '%.10y , %n' "$LINE" ; done

推荐阅读