Bash 命令:头部

Bash command: head

我正在尝试在名为 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 等。这是它们的创建顺序。

我认为你把这里的事情复杂化了。仅使用 lshead 应该可以得到你想要的结果:

ls -lt /home/myname/dummy/dummy* | head -10

要具体按 ctime 排序,请对 ls 使用 -c 标志:

ls -ltc /home/myname/dummy/dummy* | head -10

How do I make the bash to not read -exec as part of head command?

-exec 和后续参数似乎旨在指向 findfind 命令在第一个 | 处停止,因此您需要将这些参数移到前面:

find -L /home/myname/dummy/dummy* -maxdepth 0 -type f -printf '%T@ %p\n' -exec readlink -f {} \; | sort -n | cut -d' ' -f 2- | head -n 10

但是, -printf 文件详细信息和 -exec readlink 结果没有多大意义。可能您想 运行 readlink 在每个超过 head 的文件名上。在这种情况下,您可能需要查看 xargs 命令,它的作用正是将从标准输入读取的数据转换为命令的参数。例如:

find -L /home/myname/dummy/dummy* -maxdepth 0 -type f -printf '%T@ %p\n' |
  sort -n |
  cut -d' ' -f 2- |
  head -n 10 |
  xargs -rd '\n' readlink -f