这可能是愚蠢的,但是我无法获得所需的输出。
我在目录中有一个名为Abc_sfgf_kjwefgk.txt20180929_040845
的文件。
我正在尝试使用以下命令列出文件:
ls -l Abc_sfgf_kjwefgk.txt[0-9]{8}_[0-9]{4}
但这给了我错误:ls: cannot access 'Abc_sfgf_kjwefgk.txt[0-9]{8}_[0-9]{4}': No such file or directory
与此同时,使用以下命令:ls -l Abc_sfgf_kjwefgk.txt[0-9]*?_[0-9]*?
给我正确的结果。
我的初始命令出了什么问题?
答案 0 :(得分:1)
{8}
是文字字符串。由于您没有任何包含{
的文件名,因此全局正则表达式[0-9]
不会扩展。您的命令是 literally ls -l 'Abc_sfgf_kjwefgk.txt[0-9]{8}_[0-9]{4}'
。由于没有文件Abc_sfgf_kjwefgk.txt[0-9]{8}_[0-9]{4}
,因此您会收到ls
的错误消息,表明没有这样的文件。
您可能想写
ls -l Abc_sfgf_kjwefgk.txt[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9]
或
find -maxdepth 1 -regextype egrep -regex '.*/Abc_sfgf_kjwefgk.txt[0-9]{8}_[0-9]{4}' \
-exec ls -l {} \;
答案 1 :(得分:1)
您的 SECOND 命令似乎一切正常。在这里,您可以正确使用globbing。
如果您想解析ls
,则应使用以下方式:
ls | grep -E 'Abc_sfgf_kjwefgk.txt[0-9]{8}_[0-9]{4}'