【问题标题】:linux: most recent file in a directory, excluding directories and . fileslinux:目录中的最新文件,不包括目录和 .文件
【发布时间】:2011-12-08 21:55:36
【问题描述】:

我想在目录中查找最近更改的文件,不包括隐藏文件(以 . 开头的文件)和目录。

这个问题的方向是正确的,但不是我所需要的:

Linux: Most recent file in a directory

这里的关键是排除目录...

【问题讨论】:

    标签: linux bash unix directory find


    【解决方案1】:

    喜欢那里的答案,除了没有 -A

    ls -rt | tail -n 1
    

    查看man ls 了解更多信息。

    为了使其排除目录,我们使用 -F 选项为每个目录添加一个“/”,然后过滤那些没有“/”的目录:

    ls -Frt | grep "[^/]$" | tail -n 1
    

    【讨论】:

    • ls -rt | tail -n 1 不排除目录。
    • 啊,好吧。适当更改。
    【解决方案2】:

    这是你想要的,不包括目录:

    stat --printf='%F %Y %n\n' * | sort | grep -v ^directory | head -n 1
    

    【讨论】:

      【解决方案3】:

      同样的,不是很干净,但是:ls -c1 + 如果你愿意,可以添加尾巴 => ls -c1 | tail -1

      $ touch a .b
      $ ls -c1
      a
      $ ls -c1a
      a
      .b
      $ touch d
      $ ls -c1
      d
      a
      $ ls -c1a
      .
      d
      a
      .b
      ..
      $ touch .b
      $ ls -c1a
      .b
      .
      d
      a
      ..
      

      如您所见,没有a arg,只会列出可见文件。

      【讨论】:

      • 它也显示了目录——我希望排除那些。我是不是用错了你的命令?
      • ls -cF1 | grep -Ev '/$' | head -1 ?
      【解决方案4】:

      可能与另一篇文章中的答案相同,但略有不同(不包括目录)-

      ls --group-directories-first -rt | tail -n 1
      

      【讨论】:

      • 文件名末尾也没有“*”符号
      猜你喜欢
      • 2021-10-30
      • 1970-01-01
      • 2017-10-08
      • 1970-01-01
      • 2010-09-09
      • 2015-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多