Czy w Linux-owym narzędziu „find” jest jakaś opcja szerokości / szerokości-pierwszej?
12
Nie ma nic wbudowanego do znalezienia, nawet GNU find. Możesz przetworzyć dane wyjściowe w find
celu sortowania według liczby ukośników, na przykład za pomocą Perla:
find ... | perl -e 'print sort {$a=~s!/!/! <=> $b=~s!/!/!} <>'
<>
jest listą wszystkich linii wejściowych;$a =~ s!/!/!g
to liczba ukośników $a
, których używamy jako kryterium sortowania.Jeśli możesz użyć zsh:
echo **/*(oe\''REPLY=${REPLY//[^\/]}'\')
**/*
wyświetla wszystkie pliki w bieżącym katalogu i podkatalogach.oe
kontroluje kolejność zwracania dopasowań: są one sortowane według wartości REPLY
po uruchomieniu kodu tutaj w cudzysłowach dla każdego dopasowania z REPLY
początkowo ustawioną zgodną ścieżką.$REPLY
aby usunąć wszystko oprócz ukośników. Wynik składa się ze wszystkiego na głębokości 1 (wynik pusty $REPLY
), a następnie wszystkiego na głębokości 2 ( $REPLY
kończy się na /
), głębokości 3 ( //
) itp.
nie
Przejdź do tego pytania na temat SO w celu obejścia tego problemu.
źródło
Mam wrażenie, że możesz. Obejmuje grep i takie oraz pętlę, ale uważam, że działa bardzo dobrze, szczególnie w twoim przypadku, że znalezienia nie trzeba uzupełniać.
Jest bardziej zasobochłonny z powodu:
Jest to dobre, ponieważ:
Możesz również łatwo dopasować go do jednej linii dość (?):
Ale wolę małe skrypty niż pisanie ...
źródło