如何结合 ls 和 grep 仅列出文件并使用 ls 来计算目录

mas*_*ama 2 command-line bash grep

我在结合 ls 和 grep 时遇到了一些麻烦。问题是我必须只使用 ls 和 grep 来列出主目录中的所有文件。我尝试了多种组合,但没有效果。我想我应该像这样使用它:

ls /home/mydir | grep stomething
Run Code Online (Sandbox Code Playgroud)

下一个问题是(不知道怎么做)如何使用 ls 和另一个命令来计算主文件夹中的目录数?

flo*_*nts 5

您对 ls 和 grep 的使用是正确的,它将在包含 'stomething' 的 ls 输出中找到任何结果。请注意,查看整行,而不仅仅是文件名(主要适用于将某些标志与 ls 一起使用,例如 ls -l 等)。

查找目录,最好使用 find 和 wc (wordcount):

find /home/mydir -maxdepth 1 -mindepth 1 -type d | wc -l
Run Code Online (Sandbox Code Playgroud)

解释:

  • maxdepth 1,计数到 1 树中的最大深度(例如,在这种情况下,只有目录,而不是子目录)
  • mindepth 1,主要用于该示例中以确保 find 找不到“。” 还。
  • 键入 d,查找目录(-type f 将查找文件,l 将查找软链接等)
  • wc -l,计算返回的行数

如果您在没有管道的情况下运行 wc,您将获得所有结果的列表。Find 是一个非常方便的命令,需要熟悉。