我正在尝试从目录中删除具有某些扩展名的文件。我使用的命令无法区分.h和.sh。我在哪里可以改善我的正则表达式?
这是我当前的命令:
find directory/ -type f -regextype posix-extended -regex '.*.(java|[hc]|cpp|hpp|cc|hh)'
当前,这将返回.csh和.sh文件。我不希望那样发生。当我删除“ [hc]”时,此问题得以解决,但随后找不到任何.c或.h文件。我也尝试过
find directory/ -type f -regextype posix-extended -regex '.*.(java|h|c|cpp|hpp|cc|hh)'
但是这也会返回.csh和.sh文件。
答案 0 :(得分:3)
添加输入锚点的结尾:
find ... -regex '.*\.(java|h|c|cpp|hpp|cc|hh)$'
这使列表成为扩展的绝对列表,而不仅仅是扩展的前缀。