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 等。这是它们的创建顺序。
我认为你把这里的事情复杂化了。仅使用 ls
和 head
应该可以得到你想要的结果:
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
和后续参数似乎旨在指向 find
。 find
命令在第一个 |
处停止,因此您需要将这些参数移到前面:
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
我正在尝试在名为 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 等。这是它们的创建顺序。
我认为你把这里的事情复杂化了。仅使用 ls
和 head
应该可以得到你想要的结果:
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
和后续参数似乎旨在指向 find
。 find
命令在第一个 |
处停止,因此您需要将这些参数移到前面:
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