如何在 Linux 中的目录树中查找最旧的文件

前几天,一位 Linux 用户问我如何在 Linux 的命令行中找到目录中最旧的文件。 我们可以通过在 GUI 模式下使用日期和时间戳来判断目录中最旧的文件。 但是,我不知道如何从命令行中找到它。 幸运的是,我发现 这个解决方案 在谷歌搜索了一下之后。 如果您想知道如何在目录或整个文件系统中查找最旧的文件,请继续阅读。 这并不难。

在 Linux 的目录树中查找最旧的文件

要查找目录中最旧的文件,对于 example /home/sk/ostechnix/, 跑:

$ find /home/sk/ostechnix/ -type f -printf '%T+ %pn' | sort | head -n 1

让我们分解这个命令,看看每个命令行参数的作用。

这里,

  • 寻找 – 在目录层次结构中搜索文件。
  • /home/sk/ostechnix/ – 搜索位置。
  • 输入-f – 仅搜索常规文件。
  • -printf ‘%T+ %pn’ – 打印文件的最后修改日期和时间,以分隔 + 象征。 (例如 2015-07-22+13:42:40.0000000000)。 这里, %p 表示文件名。 n 表示新行。
  • 排序 | 头-n 1 – 这 种类 命令对输出进行排序并将输出发送到 命令显示最旧的文件。 这里, -n 1 仅表示一个文件,即最旧的文件。

你可能已经知道, 解释壳 帮助您找到 Linux 命令的每个部分的作用。

上述命令返回以下输出:

2015-07-22+13:42:40.0000000000 /home/sk/ostechnix/Absolute FreeBSD_ 2nd Edition.pdf

正如您在上面的输出中看到的, 绝对 FreeBSD_ 第 2 版.pdf 是最旧的文件 /home/sk/ostechnix/ 目录。

请注意 Linux 不会使用文件创建日期来查找最旧的文件。 相反,它使用文件修改日期 找到它。

下载免费备忘单:“Linux 命令行备忘单”

同样,要在给定目录中查找前五个最旧的文件,只需运行:

$ find /home/sk/ostechnix/ -type f -printf '%T+ %pn' | sort | head -n 5

样本输出:

2015-07-22+13:42:40.0000000000 /home/sk/ostechnix/Absolute FreeBSD_ 2nd Edition.pdf
2016-11-28+21:03:05.0000000000 /home/sk/ostechnix/Etcher-linux-x64.AppImage
2016-12-14+18:28:20.5162190000 /home/sk/ostechnix/ubuntu.jpg
2016-12-18+18:14:46.5931480000 /home/sk/ostechnix/Marconi Union - Sleepless.mp3
2017-03-17+19:28:27.8193330000 /home/sk/ostechnix/The Devops toolkit.pdf

最旧的文件将首先显示。

要在整个根 (/) 文件系统中查找最旧的文件,请运行:

$ sudo find / -type f -printf '%T+ %pn' | sort | head -n 1

更新:

一位 Linux 用户在下面的评论部分指出了如何在目录中查找最旧或最新的文件。 这比我的方法容易得多。

要找出目录中最旧的文件,请转到该目录并运行:

$ ls -lt | tail -1

要查找目录中的最新文件:

$ ls -ltr | tail -1

希望这很有用。