2012-07-28 31 views
2

我嘗試使用(e)grep列出目錄中的文件時,我的搜索詞包含西班牙字符,如重音元音或「ñ」(如bebé,caña)。在重音的元音的情況下,如果我用重音元音,搜索的工作原理如下所示:使用grep查找帶有重音字符的文件名或在搜索詞中用ñ

$ ls | egrep 'bebe' 
8 bebé 
IMQ_bebé1.wav 
IMQ_bebé2.wav 
IMQ_bebé3.wav 
IMQ_bebé4.wav 
IMQ_bebé5.wav 
IMQ_bebé6.wav 

但是,如果我在搜索中包括長期的重讀元音字母(例如$ ls | egrep 'bebé') 我什麼也沒得到。

爲什麼在搜索詞中使用非重音元音是不可能的,因爲這是更大的shell腳本的一部分,它從文本文件中獲取它的搜索條件。另外,帶「ñ」的搜索詞不起作用,他們也不會只用「n」。另外,我相信肯定有辦法做到這一點!

我正在使用Mac OS X 10.6.8。我的語言環境如下:

$ locale 
LANG="en_CA.UTF-8" 
LC_COLLATE="en_CA.UTF-8" 
LC_CTYPE="en_CA.UTF-8" 
LC_MESSAGES="en_CA.UTF-8" 
LC_MONETARY="en_CA.UTF-8" 
LC_NUMERIC="en_CA.UTF-8" 
LC_TIME="en_CA.UTF-8" 
LC_ALL= 
+0

文件系統?匹配是否專門用於文件系統(目錄和/或文件名)的內容? – 2012-07-28 04:49:48

+0

我正在使用Mac OS X 10.6.8,它使用Mac OS Extended(HFS Plus)文件系統。 – 2012-07-28 17:27:38

+0

是的,我匹配來自文件系統的內容。 – 2012-07-30 13:59:16

回答

1

可以使用的iconv來unaccent列表和匹配ASCII模式:

ls | iconv -f utf8 -t ascii//TRANSLIT | egrep 'bebe' 
使用
+0

謝謝,但搜索模式來自文本utf8文本文件。另外,當我使用這個命令時,我得到一個錯誤: '$ ls | iconv -f utf8 -t ascii // TRANSLIT | egrep'bebé' iconv:(stdin):14:10:無法轉換' – 2012-07-28 12:27:03

+0

@KevinPenner,該錯誤表示'iconv'發現無法音譯的字符。你可以讓'iconv'忽略這些字符(如果你認爲它們可能不是你想要匹配的內容的一部分)。否則,你可能想深入挖掘(我認爲這是第14行,第10列)。 – 2012-07-31 17:05:31

相關問題