Подтвердить что ты не робот

Может ли "найти" или любой другой инструмент искать файлы по ширине?

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

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

4b9b3361

Ответ 1

Да, вроде.

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

Ответ 2

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

#!/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 возвращает ненулевой статус или ничего не печатает.

Ответ 3

В первой строке найдите переменную как свою очередь.

Создать 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

Ответ 4

Используйте find с опцией --maxdepth.

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

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

Ответ 5

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

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

Это действительно уродливо.