的文件名显示部我有作为在其内部具有许多目录及其名称的图案的目录: YYYYDDMM_HHMISS 实施例:20140102_120202 欲仅提取YYYYDDMM一部分。 我试过ls -l|awk '{print $9}'|grep -o ^[0-9]*
并得到了答案。 但是我有以下问题:的grep -o和使用LS
为什么犯规此返回任何结果:
ls -l|awk '{print $9}'|grep -o [0-9]*
。事实上,它应该已经返回了所有的目录。 奇怪的只是,包括 '^' 之前[0-9]工作正常:ls -l|awk '{print $9}'|grep -o ^[0-9]*
任何其他(简单)的方式实现的结果呢?
原因'[0-9] *'什么也没有匹配是什么都没有足够的匹配,所以'grep'停在那里。尝试'[0-9] [0-9] *'或'grep -E'[0-9] +'',尽管没有锚也会匹配时间戳。 – tripleee
务必引用正则表达式来防止shell试图将其视为模式。如果shell成功,则正则表达式将被替换为匹配它的文件名列表。 – chepner