Поиск подкаталогов глубиной 1, в которых _не_ нет файла - PullRequest
1 голос
/ 27 мая 2019

Я работаю над проектом с открытым исходным кодом. В большинстве, но не во всех подкаталогах глубины 1 можно найти файл с именем «test.c». Как я могу найти те каталоги, которые не включают "test.c"?

Например, у меня есть подкаталоги dir1, dir2, dir3. Dir2 и dir3 имеют "test.c". Я должен вручную проверить их с помощью «ls», чтобы определить, что «dir1» не имеет «test.c». Возможно, есть более простой способ (например, команда bash) сделать это? Я нахожусь под Ubuntu 16. Поэтому команда bash предпочтительнее.

1 Ответ

1 голос
/ 27 мая 2019

Вы можете использовать эту команду find из базового каталога всех подкаталогов:

find . -type d -exec bash -c 'for d; do [[ -f "$d"/test.c ]] || echo "$d"; done' - {} +

Эта команда находит все подкаталоги из текущего каталога и проверяет наличие файла test.c в каждом каталоге в команде bash. Если файл отсутствует, печатается имя каталога.

...