Может ли «найти» или любой другой инструмент поиска файлов в ширину?

Иногда я знаю, что файл не так глубоко, но очень плотный подкаталог не позволяет мне легко найти нужные файлы.

Можнонаходить (или любой другой инструмент) искать файлы, используя поиск в ширину?

Ответы на вопрос(5)

find . | awk '{FS = "/" ; print "", NF, $F}' | sort -n  | awk '{print $2}' | xargs grep -d skip "search term"

Он использует поиск, чтобы перечислить все файлы. Первая команда awk подсчитывает все символы "/"; персонажи. Он сортирует по количеству, а затем отбрасывает столбец подсчета. Наконец, он использует xargs для поиска в отсортированном списке файлов.

Это действительно безобразно.

Поиск в ширину, использующий переменную в качестве своей очереди.

Создайтеbfs.sh

#!/bin/bash

queue="$1"
shift

while [ -n "$queue" ]
do
    echo "$queue" | xargs -I'{}' find {} -mindepth 1 -maxdepth 1 $*
    queue=`echo "$queue" | xargs -I'{}' find {} -mindepth 1 -maxdepth 1 -type d`
done

Сделайте его исполняемым:

$ chmod u+x ./bfs.sh

Тогда вы можете сделать поиск в ширину:

$ ./bfs.sh /path/to/somewhere -name foobar

Ужасный взлом, не буду работать с-0 или любые действия, кроме-print, неэффективные и т. д. и т. д. & # x2026;

#!/bin/bash
i=0
while results=$(find -mindepth $i -maxdepth $i "[email protected]") && [[ -n $results ]]; do
    echo "$results"
    ((i++))
done

В основном это просто работает

find -mindepth 0 -maxdepth 0
find -mindepth 1 -maxdepth 1
find -mindepth 2 -maxdepth 2
…………………………………………………………………………

до тех порfind возвращает ненулевой статус или ничего не печатает.

использованиеfind с--maxdepth вариант.

Это наСправочники раздел на вашей справочной странице; может найти другие варианты, более подходящие в зависимости от ваших потребностей.

Чтобы достичь точного поиска в ширину, вам нужно будет выполнить цикл со смешанным--mindepth а также--maxdepth опции. Но я не думаю, что нужно быть таким точным, обычно достаточно ограниченного поиска.

Решение Вопроса

Да вроде.

Вы можете использовать-depth возможность заставить его обрабатывать содержимое каталога до самого каталога. Вы также можете использовать-maxdepth возможность ограничить, сколько каталогов вниз он будет сверлить.

Ваш ответ на вопрос