linux - 将一个目录下的三个最新文件(递归)复制到另一个指定目录

标签 linux bash

我正在使用 bash。

假设我有一个日志文件目录/var/myprogram/logs/

在这个目录下,我有许多子目录和子目录,其中包含来 self 的程序的不同类型的日志文件。

我想在/var/myprogram/logs/下找到以2010开头的三个最新的(最近修改过的)文件,不 pipe 目录并将它们复制到我的主目录。

以下是我会手动执行的操作
1. 遍历每个目录并执行 ls -lt 2010* 查看最近修改了哪些以 2010 开头的文件。
2. 遍历所有目录后,我会知道哪三个文件是最新的。所以我手动将它们复制到我的主目录。

这非常乏味,所以我想知道是否可以通过某种方式将一些命令组合在一起以一步完成此操作,最好不使用 shell 脚本?

我一直在研究 findlsheadawk,我可能能够可以使用,但还没有想出将它们粘合在一起的正确方法。

如果我需要澄清,请告诉我。谢谢。

最佳答案

这里是你如何做到的:

 find -type f -name '2010*' -printf "%C@\t%P\n" |sort -r -k1,1 |head -3 |cut -f 2-

这会输出一个以上次更改时间为前缀的文件列表,根据该值对它们进行排序,取前 3 名并删除时间戳。

关于linux - 将一个目录下的三个最新文件(递归)复制到另一个指定目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3992190/

相关文章:

python - 是否可以在 python 中检测暂停/断电信号

linux - 如何创建linux终端ASCII字符标识?

由于目录原因,Ruby 一行失败

bash - 在参数中使用通配符选项为 bash 脚本创建别名

java - 如何从 Cygwin 运行 Java

bash - 为什么命令错误| grep 'regex-not-matching-error' 仍然打印错误?

linux - 我如何运行 linux 命令 WHM VPS

linux - Bash:使用 ls 、 awk 和 grep 列出文件大小

linux - Makefiles输出目录

bash - 根据第一个/最后一个记录的最大/最小值对文件进行成对修剪