2012-01-19 30 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" 

这将递归搜索到您的目录树中。

就是这样。