获取bash中最后添加的子文件夹?

时间:2019-01-03 03:48:12

标签: bash

我知道您可以获取最后修改的文件夹,但是您可以获取最后添加的文件夹吗?或者实际上我想要的是第一个添加的文件夹。

我有一个脚本,可将Flatiron的课程分叉并将其下载到一个文件夹中,并且由于我按顺序手动获得了这些课程,然后在完成后将其移至“ done”文件夹中,因此该文件夹中的最旧文件夹lessons文件夹应该是我准备的下一个课程。因此,最好有一个脚本来调用下一课,但是该文件夹可能由于已添加而被修改了(偶然地),因此按修改后的排序将不起作用。

这可能吗?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的,但您将需要使用stat(1):

for a in *; do stat -c "%n %w" "$a"; done

将以可读格式显示所有文件以及创建时间;使用%W(大写)将打印一个unix时间戳,适合将输出传递给sort(1),这可能是您想要的。有关详细信息,请参见man stat

评论后更新

Triplee指出循环不是必须的,但实际上我忽略了这一点(以前从未使用过stat ...)。因此,以上命令可以简化为:

stat -c "%n %w" *

,可以以任何所需的方式读取或传输输出流。

更新用于排序

在具有相关日期的文件列表之后,可以对它们进行排序:

stat -c "%W %n" *

...输出类似:

  

1415945135 conf openwrt.txt
  1424503577 Triton
  1440843167 alterwifi.txt
  1465755258 brushless.txt

对于每行,第一个数字是创建日期的时间,以“纪元秒”表示;第二个字段是文件名。

可以对其进行排序,然后进行过滤以仅获取第一行,该行指示最早创建的文件:

stat -c "%W %n" * |sort -n |tail -n 1

以我为例输出:

  

1546278526台式机

OP的一些注意事项:我不知道为什么选项-c会出错,在我的系统中,必须指定格式字符串。