【问题标题】:bash script: find recent file in subdirectories [duplicate]bash脚本:在子目录中查找最近的文件[重复]
【发布时间】:2020-08-21 08:46:48
【问题描述】:

我正在尝试在与某个模式匹配的子目录中找到最新编辑文件的路径。为此,我想使用 bash 脚本来获取文件路径,然后将其用于一系列操作。

例如,我会有这样一棵树:

Directory/
   dir 1.0/
      fileIwant.txt
      fileIdont.txt
   dir 2.0/
      fileIwant.txt
      fileIdont.txt
   dir 2.1/
      fileIwant.txt
      fileIdont.txt

所以在这种情况下,我想找到最新的“fileIwant.txt”(可能是“dir 2.1”中的那个,但也可能不是)。然后我想存储这个文件的路径来复制它,重命名它或其他什么。

我找到了一些脚本可以在当前目录中找到最新的,但我并没有真正理解它们......所以我希望有人能帮我。

谢谢!

编辑: 感谢不同的答案,我最终得到了这样完美的东西:

filename="fileIwant"
regex=".*/"$filename"-([0-9]+(\.[0-9]+)*).*/"$filename"\.txt"

path="$(find . -regextype awk -regex $regex -type f -printf '%T@ %p\n' | sort -n | cut -f2- -d" " | tail -1)"

(显然与我之前的示例不完全匹配)

【问题讨论】:

    标签: bash


    【解决方案1】:

    这对你有帮助,

    find /yourpathtosearch -type f -printf "%T@ %p\n" | sort -nr  | head -n 1 | awk '{print $2}'
    

    man 命令名称将为您提供有关如何使用每个命令的更多详细信息 例如:man find

    【讨论】:

    • 好的,我使用了这个并使用“find”命令的“-regex”标志来匹配我需要的文件,它就像一个魅力。谢谢。
    【解决方案2】:

    只需两个命令即可轻松完成:

    ls -t Directory/dir*/fileIwant.txt | head -n 1
    

    带有选项-t 的命令ls 根据man 页面按修改时间对结果进行排序,最新的在前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-18
      • 2021-11-27
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      • 2016-10-17
      相关资源
      最近更新 更多