列出多个子目录中的最新文件

列出多个子目录中的最新文件

我有多个子目录(使用 GUID 命名),其中包含我运行的计算机模拟的结果文件。这些文件都以以下方式命名:hydro_configuration_xxxx.xyz,其中 xxxx 是从 0000 向上的四位数字;最新文件具有最高的四位数字。我希望能够列出每个子目录中的最新文件以及它所在的目录。

因此,例如,给定子目录 fc86783b-bcc5-4456-8964-049682ee81aa 包含文件 hydro_configuration_0000.xyz 到 hydro_configuration_0123.xyz,目录 e608273d-35bd-442c-9de1-0ec184aa0d95 包含文件 hydro_configuration_0000.xyz 到 hydro_configuration_3564.xyz,我需要一个产生输出的命令:

./fc86783b-bcc5-4456-8964-049682ee81aa/hydro_configuration_0123.xyz 
./e608273d-35bd-442c-9de1-0ec184aa0d95/hydro_configuration_3564.xyz

答案1

latestfile.sh创建包含以下内容的bash 脚本:

#!/bin/bash
ls -1tr "$1" | tail -n1

运行chmod +x latestfile.sh以使其可执行。

然后执行以下命令:

find test -mindepth 1 -type d -name "hydro_configuration_*" -printf "%p/" -a -exec ./latestfile.sh {} \;

这将找到所有与模式匹配的目录并打印它们的名称,后跟/,然后是其中最新文件的名称。

相关内容