2

Я хочу посчитать строки всех файлов в этом каталоге и всех его подкаталогах, но исключить каталоги "public", "modules" и "templates".

Как?

2 ответа2

4
 find . -type f |grep -v "^./public" |grep -v "^./modules"|grep -v "^./templates"|xargs cat |wc -l
  1. составьте список всех файлов в текущем каталоге с помощью команды find . -type f
  2. отфильтровать файлы из директорий "exclude" с помощью grep -v
  3. xargs прочитает список файлов из stdin и передаст все файлы в качестве параметров cat .
  4. cat распечатает все файлы на стандартный вывод
  5. wc будет считать строки.

Если вы хотите посчитать строки в каждом файле отдельно, измените xargs cat |wc -l на xargs wc -l

2
find . -type d \
  \( -path ./public -o -path ./modules -o -path ./templates \) -prune \
  -o -type -f -print0 | xargs -0 wc

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .