Исключить конкретный вложенный каталог из ls --ignore - PullRequest
0 голосов
/ 12 октября 2018

Мне нужно перечислить все каталоги внутри каталога под названием app.Список каталогов выглядит как

app/frontend
app/authservice
app/mailservice
...............
...............

Я хочу вывести список всех каталогов внутри каталога приложения, кроме app/frontend из корневого каталога.

Мне удалось получить требуемый вывод, используя grep -vкоманда

ls -d /app/packages/*/ | grep -v packages/frontend/

но я бы хотел получить то же самое, используя --ignore в команде ls.

1 Ответ

0 голосов
/ 12 октября 2018

ls --ignore для подразумеваемых записей, например, при выводе содержимого каталога без -d или в рекурсивном списке с ls -R.Он не работает с записями, которые передаются в командной строке, что вы сделали с /app/packages/*/.Важно то, что это оболочка, которая расширяет глобус *, а не ls, поэтому, что касается ls, каталог frontend явно записан.

Вы можете использовать функции оболочки, чтобы пропуститьконкретный каталог.Этот расширенный глобус будет перечислять все каталоги, кроме frontend:

ls -d /app/packages/!(frontend)/

(В скрипте вам потребуется shopt -s extglob. Расширенные глобусы обычно включены по умолчанию в интерактивных оболочках, но отключены в скриптах.)

...