【发布时间】:2022-01-22 07:03:49
【问题描述】:
我正在尝试在名为dummy 的文件夹中查找所有带有dummy* 的文件。然后我需要根据创建时间对它们进行排序并获取第一个 10 个文件。我正在尝试的命令是:
find -L /home/myname/dummy/dummy* -maxdepth 0 -type f -printf '%T@ %p\n' | sort -n | cut -d' ' -f 2- | head -n 10 -exec readlink -f {} \;
但这似乎不适用于以下错误:
head: invalid option -- 'e'
Try 'head --help' for more information.
如何使 bash 不读取 -exec 作为 head 命令的一部分?
更新1:
尝试了以下方法:
find -L /home/myname/dummy/dummy* -maxdepth 0 -type f -exec readlink -f {} \; -printf '%T@ %p\n' | sort -n | cut -d' ' -f 2- | head -n 10
但这不是根据时间戳排序,因为 find 和 printf 都在打印文件,而 sort 将它们全部排序在一起。
dummy中的文件如下: dummy1、dummy2、dummy3 等。这是它们的创建顺序。
【问题讨论】:
-
谢谢。我知道
-exec不是head的有效选项。因此UPDATE1。请检查一下 -
顺便说一句,您的处理方式非常复杂。鉴于您无论如何都假设文件名不包含换行符,使用
ls -cr比使用find+sort+cut要容易得多。
标签: bash shell command-line command command-line-arguments