Как объединить ls и grep, чтобы вывести только файлы, и использовать ls для подсчета директорий

У меня проблемы с сочетанием ls и grep. Дело в том, что мне нужно использовать только ls и grep для отображения всех файлов в домашнем каталоге. Я пробовал несколько комбинаций, но безрезультатно. Я думаю, что я должен использовать это как:

ls /home/mydir | grep stomething

Следующий вопрос (не знаю, как это сделать), как использовать ls и другую команду для подсчета количества папок в главной папке?

1 ответ

Вы правильно используете ls и grep, что приведет к любым результатам в выводе ls, содержащем "stomething". Обратите внимание, что рассматривается вся строка, а не только имя файла (в основном это применимо при использовании определенных флагов с ls, таких как ls -l и т. Д.).

Находя каталоги, вам лучше использовать find и wc (wordcount):

find /home/mydir -maxdepth 1 -mindepth 1 -type d | wc -l

Объяснение:

  • maxdepth 1, считать до максимальной глубины в дереве 1 (например, только dirs, а не subdirs в этом случае)
  • mindepth 1, в основном используется в этом примере, чтобы убедиться, что find не находит "." также.
  • введите d, найдите каталоги (-type f найдет файлы, l найдет программные ссылки и т. д.)
  • wc -l, считать строки

Если вы запустите его без канала к wc, вы получите список всех результатов. Find - довольно удобная команда, с которой можно ознакомиться.

Другие вопросы по тегам