Я хочу найти подкаталог build/debug
в папке
. Есть ли какая-либо команда оболочки, которая может сделать это?
Это должно сделать это.
find . -type d -path '*/build/debug'
Испытательный жгут:
$ mkdir -p tester/{1..3}/build/debug
$ find tester -type d -path '*/build/debug'
tester/1/build/debug
tester/2/build/debug
tester/3/build/debug
Если вы включите globstar (с shopt -s globstar
), вы можете использовать двойную звездочку для рекурсивных подстановочных знаков в bash.
$ mkdir -p tester/{1..3}/build/debug
$ mkdir -p tester/anotherlevel/{1..3}/build/debug
$ mkdir -p tester/anotherlevel/yetanother/{1..3}/build/debug
$ shopt -s globstar
$ file tester/**/build/debug
tester/1/build/debug: directory
tester/2/build/debug: directory
tester/3/build/debug: directory
tester/anotherlevel/1/build/debug: directory
tester/anotherlevel/2/build/debug: directory
tester/anotherlevel/3/build/debug: directory
tester/anotherlevel/yetanother/1/build/debug: directory
tester/anotherlevel/yetanother/2/build/debug: directory
tester/anotherlevel/yetanother/3/build/debug: directory
Я использую файл здесь, чтобы показать, о чем мы говорим, но вы можете использовать это для всех видов вещей.
Выполните команду
find -name 'foldername'
. Он найдет все папки (и файлы) с таким именем и покажет путь к нему. Поиск начинается с текущей папки, в которой вы находитесь, вниз. Так что, если вы не знаете, где он находится, сначала cd /
, чтобы вы оказались в корневой верхней папке. Возможно, вы также захотите добавить sudo
перед командой, чтобы убедиться, что у папки проверки поиска у вас тоже нет прав.
grep way
find /your/sub/dir -type d -print0
печатает все ваши файлы на консоль. Теперь выводите только те, которые вы хотите увидеть, используя grep
find /home/tim/Apps -type d -print0 | grep -FzZ "debug/build"