2012-01-19 19 views
-2

我可以做我需要做的問題,如果我cd到正確的目錄,但我們的教授希望我們能夠從任何地方做到這一點。如果我使用ls和grep,如何指定要搜索的目錄?

我可以做ls | grep *pattern*它可以在我所在的目錄下工作,但是我怎麼通過指定路徑來完成任何操作?

+2

你試過'人grep'嗎?我建議這樣做... –

+2

聞起來像功課。在此閱讀有關如何使用'ls'命令的信息。 http://www.columbia.edu/acis/rad/unixcmds/ls.html它會比我們告訴你答案更有用。 – Schwern

+0

「man ls」,「man grep」 – Jason

回答

3

ls /path/to/directory | grep *pattern*應該工作。

2

如果您正在搜索特定文件的目錄,那麼我會建議使用find命令。 grep通常用於搜索文件中的內容,並列出文件名的內容。

要搜索任何類型的文件從任何地方,你可以做 -

find /path/to/search -type f 

這將遞歸列出所有文件,如果該目錄下有子目錄。您可以使用-depth選項來控制該選項。您也可以使用-name-regex選項來查找特定文件。關於find的手冊頁有例子的所有信息。

我的最後一個問題是我怎麼會實現「,其名稱不與任何一個小寫或大寫英文字母

ls -1 | grep "^[^a-zA-Z].*" 

^和$開始:這些錨它指向(^)字符串的開始和結束($)
[^ ..]:當^在字符類中時,它將否定字符的內容類。

+0

我真的很喜歡,但不幸的是我的教授要求我們用ls開始命令,所以我需要管理它。不過,這些工作很好。 我最後一個問題是我如何實現「誰的名字不是以小寫或大寫英文字母開頭。「 我試過'ls | grep'$ [^ a-zA-Z] [a-zA-Z] [a-zA-Z] * $''但它不起作用 –

+0

@DougSmith補充說回答:祝你好運!! –

+0

爲什麼結尾字符?我以爲他只關心起始字符?'「^ [^ a-zA-Z]」' –

1

你能用find嗎?

find | grep "pattern" 

它應該工作!或者如果你正在尋找目錄名稱中的模式,你應該這樣做

ls -R | grep "pattern" 

這將遞歸搜索到您的目錄樹中。

就是這樣。