2011-11-24 69 views
1

我有一個目錄文件說test.php的,其內容均低於爲什麼我無法檢測到這個文件?

< ? php $XZKsyG=’as’; 

我想拿起基於它的內容的搜索文件test.php的。所以從包含它的目錄我做:

grep 'php \$[a-zA-Z]*=.as.;' 

但是我得不到結果......我做錯了什麼?

感謝

+0

我不明白澄清:你想匹配的模式與文件名,文件內容,或其他? – wallyk

+0

無論您是在搜索一個文件還是多個文件,您爲什麼沒有找到預期結果相同的答案。所以我建議回到你的問題的原始版本。 (要在目錄中使用'grep -r'pattern'.',並且您可以在[Super User](http://superuser.com)上找到許多其他問題) –

回答

1

這工作對我很好,雖然你可能想看看那些「有趣」單引號你身邊as

pax$ cat testfile 
< ? php $XZKsyG='as'; 

pax$ grep 'php \$[a-zA-Z]*=.as.;' testfile 
< ? php $XZKsyG='as'; 

做不到這一點,有一些東西,你可以看看。其中有些可能聽起來很愚蠢,但我真的只是檢查所有基地。

  • 您確定該文件只包含您認爲的內容嗎?執行od -xcb file會給你一個十六進制轉儲它更好地檢查。
  • 你確定你正在訪問正確的文件,在正確的目錄?
  • 你有沒有做過一些愚蠢的事情,比如別名grep

也就是說,如果你正在尋找含有該字符串文件的。相反,如果你正在尋找一個名爲這樣的文件,你可以使用類似:

ls -1 | grep 'php \$[a-zA-Z]*=.as.;' 

ls -1命令給你每行一個文件,管道通過grep會過濾掉那些不匹配模式。

我想我應該提到,我真的不帶空格的文件名的忠實粉絲,但我猛烈不是文件由PHP腳本的名稱:-)

+0

真的很抱歉,請參閱編輯...我實際上正在嘗試做其他事情... – algorithmicCoder

+0

@algorithmicCoder,請參閱有關如何執行此操作的更新。 – paxdiablo

+0

我實際上正在尋找一個文件,其中包含與該模式相匹配的文本... :( – algorithmicCoder

1

它適用於我:

$ cat file 
< ? php $XZKsyG=’as’; 
$ grep 'php \$[a-zA-Z]*=.as.;' file 
< ? php $XZKsyG=’as’; 

確定該文件的內容與您向我們展示的內容完全相同嗎?

嘗試使用cat -A fileod -c file來查看文件是否真的看起來像您認爲的那樣。

(請注意,你不需要逃脫$字符,但它只是在一行的末尾元字符,但逃脫它應該沒問題。)

編輯:

的文件中as周圍的字符不是ASCII撇號;它們是Unicode右引號字符(0x2019)。如果文件以UTF-8格式存儲,則每個文件都以3字節序列表示。grep命令適用於我,因爲我的區域設置"en_US.UTF-8"使UTF-8字符在正則表達式中與.相匹配,即使它具有多字節表示形式。我懷疑你的語言環境是這樣的,它會匹配...

可能最簡單的解決方案是編輯文件以使用ASCII撇號。

你可能還想玩弄你的語言環境設置。嘗試使用grep命令,並將$LANG設置爲"en_US.UTF-8"

locale命令的輸出是什麼?

+0

哎呀!我很抱歉,我試圖搜索目錄一個包含該模式的文件不會搜索該模式的文件...我如何修改該命令? – algorithmicCoder

+0

嘗試類似'grep -l *'或'grep -r -l .'來搜索子目錄。首先你必須得到正確的搜索模式。 –

相關問題