找到grep排除dos2unix的一些文件名

时间:2013-05-15 13:14:36

标签: grep find dos2unix

到目前为止,我已经走到了这一步:

prompt$ find path/to/project -type f | grep -v '*.ori|*.pte|*.uh|*.mna' | xargs dos2unix 2> log.txt

但是,扩展名为.ori,。pte,.uh和.mna的文件仍会显示。

2 个答案:

答案 0 :(得分:1)

最好将排除留给find,请参阅Birei的回答。

grep模式的问题在于您已将其指定为shell glob。默认情况下,grep期望基本正则表达式(BRE)作为其第一个参数。因此,如果您使用:.*\.\(ori\|pte\|uh\|mna\)$替换grep模式,它应该可以工作。或者,如果您更愿意使用扩展正则表达式(ERE),则可以使用-E启用它们。然后你可以表达同样的排除:.*\.(ori|pte|uh|mna)$

完整的命令行:

find . -type f | grep -vE '.*\.(ori|pte|uh|mna)$'

答案 1 :(得分:1)

一种方式:

find path/to/project *.* -type f ! \( -name '*.ori' -o -name '*.pte' -o -name '*.uh' -o -name '*.mna' \) 
  | xargs dos2unix 2> log.txt