我有一个文件夹,其中包含编号为1、2、3、4、5等的文件。这些文件仅以数字命名。除了这些文件,我在同一目录中还有两个文件夹。
正在尝试从目录中提取最后五个文件(文件夹和没有数字的文件除外),文件名是数字。因此,我试图做这样的事情:
ls /var/lib/myFolder/prog/TEST_DEV/builds/ -t | head -n5
但这会返回文件以及我的两个目录。
然后我尝试了类似的操作:
ls /var/lib/myFolder/prog/TEST_DEV/builds/ -p | tail -5
哪个也不行。
关于如何进行的任何建议?
答案 0 :(得分:1)
您可以使用shell globbing或解释正则表达式的脚本,例如grep。
例如,要列出所有文件名仅包含数字(一个或多个数字)的文件,您可以这样:
ls -1 | egrep '\b[0-9]+\b'
要检索如您所说的最后5个文件,您需要:
ls -t
之类的ls排序规则按上次修改日期进行排序\b[0-9]+\b
排除末尾包含'/'的文件名,这意味着匹配项从头到尾具有1个或多个数字。在目录名末尾可以使用'/',因为ls也具有p
选项。tail -5
命令限制返回的匹配项所以,我想这样的事情对你有用:
ls -1tp | egrep '\b[0-9]+\b' | tail -5
对此SO问题的参考:Regular Expression usage with ls