如何在unix中从目录中提取文件(以数字命名)
我有一个文件夹,由编号为1、2、3、4、5等的文件组成。这些文件仅以数字命名。除了这些文件,我还有两个文件夹在同一个目录中 我试图从文件名为数字的目录(不包括文件夹和没有数字的文件)中提取最后五个文件。所以我试着做这样的事情:如何在unix中从目录中提取文件(以数字命名),unix,Unix,我有一个文件夹,由编号为1、2、3、4、5等的文件组成。这些文件仅以数字命名。除了这些文件,我还有两个文件夹在同一个目录中 我试图从文件名为数字的目录(不包括文件夹和没有数字的文件)中提取最后五个文件。所以我试着做这样的事情: ls /var/lib/myFolder/prog/TEST_DEV/builds/ -t | head -n5 ls -1 | egrep '\b[0-9]+\b' 但这会返回文件以及我的两个目录 然后我尝试了一些类似的方法: ls /var/lib/myFolde
ls /var/lib/myFolder/prog/TEST_DEV/builds/ -t | head -n5
ls -1 | egrep '\b[0-9]+\b'
但这会返回文件以及我的两个目录
然后我尝试了一些类似的方法:
ls /var/lib/myFolder/prog/TEST_DEV/builds/ -p | tail -5
这也不管用
有关于如何继续的建议吗?您可以使用或使用解释正则表达式的脚本,如grep
例如,要列出其文件名仅包含数字(一个或多个数字)的所有文件,您可以这样做:
ls /var/lib/myFolder/prog/TEST_DEV/builds/ -t | head -n5
ls -1 | egrep '\b[0-9]+\b'
如您所说,要检索最后5个文件,您需要:
ls-t
按上次修改日期排序\b[0-9]+\b
排除末尾包含“/”的文件名,这意味着匹配项从开始到结束都有一个或多个数字。“/”在目录名的末尾可用,因为ls还有p
选项tail-5
命令限制返回的匹配ls -1tp | egrep '\b[0-9]+\b' | tail -5
关于这一问题:
参考一个。Shell globbing
=代码>grep regexps;-。对于这个问题,shell globbing的一个有用示例是ls-tp[0-9]
,然后您可以跳过第一个egrep
。祝大家好运。@Shelleter-您的ls-tp
将丢失多个数字的文件,例如123
@StephenP;是的,我同意。O.P.特别提到了一位数的文件名,所以我的评论仅限于这一需要。很容易扩展到ls-tp[0-9][0-9][0-9]…
以捕获尽可能多的纯数字文件名。一切都是权衡;-)。祝大家好运。-p
为您提供了一个指标,但您没有使用它。请尝试ls/p/a/t/h-t-p | grep-v'/$|..