我正在使用 bash。
假设我有一个日志文件目录/var/myprogram/logs/
。
在这个目录下,我有许多子目录和子目录,其中包含来 self 的程序的不同类型的日志文件。
我想在/var/myprogram/logs/
下找到以2010
开头的三个最新的(最近修改过的)文件,不 pipe 目录并将它们复制到我的主目录。
以下是我会手动执行的操作
1. 遍历每个目录并执行 ls -lt 2010*
查看最近修改了哪些以 2010
开头的文件。
2. 遍历所有目录后,我会知道哪三个文件是最新的。所以我手动将它们复制到我的主目录。
这非常乏味,所以我想知道是否可以通过某种方式将一些命令组合在一起以一步完成此操作,最好不使用 shell 脚本?
我一直在研究 find
、ls
、head
和 awk
,我可能能够可以使用,但还没有想出将它们粘合在一起的正确方法。
如果我需要澄清,请告诉我。谢谢。
最佳答案
这里是你如何做到的:
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/