Есть ли какая-либо опция ширины / глубины в утилите Linux для поиска?
12
Там нет ничего встроенного, чтобы найти, даже GNU найти. Вы можете постобработать вывод find
сортировки по количеству слешей, например, с помощью Perl:
find ... | perl -e 'print sort {$a=~s!/!/! <=> $b=~s!/!/!} <>'
<>
список всех входных строк;$a =~ s!/!/!g
количество косых черт $a
, которое мы используем в качестве критерия сортировки.Если вы можете использовать Zsh:
echo **/*(oe\''REPLY=${REPLY//[^\/]}'\')
**/*
перечисляет все файлы в текущем каталоге и подкаталогах.oe
управляет порядком, в котором возвращаются совпадения: они сортируются по значению REPLY
после выполнения здесь кода в кавычках для каждого совпадения, для которого REPLY
изначально задан совпадающий путь.$REPLY
чтобы удалить все, кроме слэшей. Таким образом, результат состоит из всего на глубине 1 (пустой результат $REPLY
), затем всего на глубине 2 ( $REPLY
заканчивается /
), глубине 3 ( //
) и т. Д.
нет
Перейти к этому вопросу на SO для обходных путей.
источник
Я чувствую, что вы можете. Он включает в себя grep и подобные, и цикл, но я считаю, что он работает очень хорошо, особенно для вашего случая, когда поиск не нужно завершать.
Это более ресурсоемкий из-за:
Это хорошо, потому что:
Вы также можете легко (?) Поместить его в одну строку:
Но я предпочитаю небольшие сценарии, чем печатать ...
источник