2011-12-06 25 views
0

如何通過正則表達式實現OR選擇。舉例來說,如果我有以下文件如何在正則表達式中實現OR(選擇)

/foo/bar/ 
├── foo1.txt 
├── foo2.txt 
├── foo3.txt 
├── foo1.eps 
├── foo2.eps 
├── foo3.eps 
├── foo1.pdf 
├── foo2.pdf 
└── foo3.pdf 

,我想指定我想只有1或在其中2的那些,我可以做*[12]*像這樣

find . -name "*[12]*" -type f -maxdepth 1 -exec echo {} ";" 

但如果我只選擇像這樣

find . -name "*[txt || eps]*" -type f -maxdepth 1 -exec echo {} ";" 

顯然上面的例子不工作txteps文件要更復雜的選擇,但我的意思是,我はnt和OR運算符||在這裏。

回答

2

-name模式不是正則表達式。如果他們是,使用|將工作。但是,有效的方法是使用find的表達式語言來獲得優勢。像這樣:

find . -maxdepth 1 \(-name "*txt*" -o -name "*eps*" \) -type f -exec echo {} ";" 

您使用-o形成了分組的或表達和括號(逃過殼)。