prompt$ find path/to/project -type f | grep -v '*.ori|*.pte|*.uh|*.mna' | xargs dos2unix 2> log.txt
但是,扩展名为.ori,。pte,.uh和.mna的文件仍会显示。
答案 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