前几天,一位 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
希望这很有用。