使用grep查找带有重音字符的文件名或ñ;在搜索词中

使用grep查找带有重音字符的文件名或ñ;在搜索词中,grep,Grep,我尝试使用(e)grep来列出目录中的文件,但失败了,因为我的搜索词包含了西班牙语字符,如重音元音或“ñ”(如bebé、caña)。对于重音元音,如果我使用非重音元音,搜索工作如下所示: $ 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é) 我什么也

我尝试使用(e)grep来列出目录中的文件,但失败了,因为我的搜索词包含了西班牙语字符,如重音元音或“ñ”(如bebé、caña)。对于重音元音,如果我使用非重音元音,搜索工作如下所示:

$ 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”的搜索词。另外,我相信一定有办法做到这一点


我正在使用MacOSX10.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=

您可以使用iconv取消输入列表并匹配ascii模式:

ls | iconv -f utf8 -t ascii//TRANSLIT | egrep 'bebe'

正在使用文件系统?是否只对文件系统中的内容(目录和/或文件名)进行匹配?我正在使用Mac OS X 10.6.8,它使用Mac OS Extended(HFS Plus)文件系统ꞌm匹配文件系统中的内容。谢谢,但是搜索模式来自文本utf8文本文件。另外,当我使用这个命令时,我得到了一个错误:
$ls | iconv-f utf8-t ascii//translatit | egrep'bebé'iconv:(stdin):14:10:无法转换
@KevinPenner,该错误表明
iconv
发现了无法转换的字符。您可以让
iconv
忽略这些字符(如果您假设它们可能不是您想要匹配的内容的一部分)。否则,您可能需要更深入地挖掘(我认为这在第14行第10列)。