我試圖在包含多個文件的文件夾內進行搜索。這些文件的名稱是用大寫與.SUB擴展小寫:(bash)grep -i不會對輸入文件不敏感搜索大小寫
AAA.sub
BBB.sub
CCC.sub
DDD.sub
我正在使用grep搜索模式槽這些文件,但是我想只使用lo用於輸入文件的大寫字母。
在grep的手冊頁上寫着:
-i,--ignore情況 忽略模式和輸入文件都需要區分大小寫。 (-i是由POSIX指定。)
所以,如果我正確理解:
的grep -i子電路/原理圖/ AAA
和
grep的-i subckt/schematics/AAA
假設無論其情況如何(AAA或aaa)都能夠搜索文件「aaa」中的模式「子文件」,並且如果在文件中同時存在兩個名爲aaa和AAA的文件,我期望grep來搜索它們兩個。
但是,當我嘗試我的搜索與第一條指令(小寫)它不起作用,給我「沒有這樣的文件或目錄」消息。 當我嘗試使用第二條指令(大寫)進行搜索時,它正常工作。
我明顯理解grep -i選項的問題,誰能給我一個關於這個問題的答案?
使用grep時輸入文件是否可能不區分大小寫?
編輯: 我的問題是缺乏細節,甚至強硬。我已經找到了答案,我的問題,我將在此添加,以防別人絆倒細節:
我有一個文件,其中包含每一個列表文件名我想grep。我的名單看起來是這樣的:
AAA電容C_0
BBB電容C_0
CCC電阻R_IN
...
grep的是一個Perl腳本內部完成,Perl腳本解析列表文件,並得到一個while循環中每個單獨的文件名(AAA BBB CCC)的名稱。 然而,列表文件中的名字是用小寫的,而我想要grep的文件的名字是用大寫字母寫的。
這就是爲什麼我想有輸入文件搜索不區分大小寫,這樣我可以直接做grep -i subck aaa
,它會在文件中搜索「AAA」
然而,由於grep的是從啓動perl腳本,並且由於顯然不可能讓grep的行爲如此,我使用perl的uc()函數將aaa轉換爲AAA,並使用它執行grep。 (見我的回答如下)
你是否在Mac上有任何機會? Mac OS X正在使用的早期版本的grep中存在一個已知的錯誤。你可以嘗試使用自制軟件更新你的grep版本! – zoubida13
不,這是一個紅帽子Linux工作室 – meldigoth
我很困惑。你是想搜索一個目錄中的文件,還是你有一個你想grep的文件列表(可能存儲在一個文件中),或者你想grep文件的內容? – TomOnTime