如果我使用ls和grep,如何指定要搜索的目录?

时间:2012-01-19 20:48:26

标签: regex grep

如果我进入正确的目录,我可以做我需要做的问题,但我们的教授希望我们能够从任何地方做到这一点。

我可以ls | grep *pattern*,它可以从我所在的目录中运行,但如何通过指定路径在任何地方进行操作?

3 个答案:

答案 0 :(得分:3)

ls /path/to/directory | grep *pattern*应该有用。

答案 1 :(得分:2)

如果您在目录中搜索特定文件,那么我建议使用find命令。 grep通常用于搜索文件中的内容,并列出文件名的内容。

要从任何地方搜索任何类型的文件 -

find /path/to/search -type f

如果该目录有子目录,这将递归列出所有文件。您可以使用-depth选项控制它。您还可以使用-name-regex选项查找特定文件。 find的手册页包含示例中的所有信息。

  

我的最后一个问题是我如何实现“其名称不以小写或大写英文字母开头

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

^和$:这些锚点指向字符串的(^)开头和结尾($)。
[^ ..]: 当^在字符类中时,它会否定字符类的内容。

答案 2 :(得分:1)

你也可以使用find吗?

find | grep "pattern"

它应该工作!或者,如果您要查看目录名称中的模式,则应该执行

ls -R | grep "pattern"

以递归方式搜索到您的目录树。

就是这样。