Próbuję wyszukać wszystkie XML
pliki w określonym katalogu i wszystkie podkatalogi (rekurencyjnie) w nim zawarte.
ls -R *.xml
wyświetla tylko pliki w bieżącym katalogu. Jestem pewien, że same podfoldery mają kilka .xml
plików, ale żaden z nich się nie pokazuje.
Czy to problem z konfiguracją?
ls -R | grep .xml
Odpowiedzi:
Spróbuj użyć Znajdź
źródło
find
nadls -R
?find
orazgrep
, kiedyfind
można przeprowadzić filtrowanie przy użyciu zarówno wyrażeń regularnych, jak i globów, a także nieużywającfind
'i'-print0
grep ',-z
kiedy trzeba miksować.Możesz to zrobić tylko z funkcją Znajdź :
.
jest bieżącym katalogiem. Jeśli chcesz wyszukać w innym katalogu, zastąp.
go ścieżką do katalogu.źródło
.php
plików w bieżącym katalogu. Ale zwrócił tylko.php
pliki w bieżącym katalogu, nie przeszukiwał rekurencyjnie w podkatalogach. Dlatego pytam, czyfind
polecenie wyszukuje rekurencyjnie, czy nie.find
polecenie wyszukuje rekurencyjnie. Jeśli nie podasz parametru, myślę, że twoja powłoka może dokonać rozszerzenia*
, więc będzie pasować do plików w bieżącym katalogu.Wypróbuj to polecenie:
ls
nie ma opcji filtrowania danych wyjściowych. W tym celu musisz użyć rury. To przekazuje dane wyjściowe zls
dogrep
, a następnie filtruje je, aby pokazać tylko.xml
pliki.źródło
ls
?grzmotnąć
Korzystając z
globstar
opcji powłoki, możemy skorzystać z rekurencyjnego globowania./**/*
Perl
Perl ma moduł
Find
, który pozwala na rekurencyjne przechodzenie przez drzewo katalogów. W ramachfind()
funkcji specjalnej możemy zdefiniować pożądany podprogram i katalog, który chcemy przejść, w tym przykładzie to.
. Jednowarstwowy w takim przypadku to:Pyton
Podczas gdy Perl ma cały moduł dedykowany do przechodzenia przez rekurencyjne drzewo, Python ma zgrabną funkcję,
walk()
która jest częściąos
modułu i wielokrotnie zwraca krotkę najwyższej ścieżki, listę wszystkich podkatalogów i listę nazw plików. Możemy wykonać następujące czynności:Może to być o wiele fajniejsze jako skrypt:
odnaleźć
Inne odpowiedzi wspomniano
find
o rekursywnym przechodzeniu, a to narzędzie do zadania. Należy wspomnieć o tym, żefind
ma wiele przełączników wiersza poleceń, takich jak-printf
drukowanie danych wyjściowych w pożądanym formacie,-type f
wyszukiwanie tylko zwykłych plików,-inum
wyszukiwanie według numeru i-węzła,-mtime
wyszukiwanie według daty modyfikacji,-exec <command> {} \;
wykonywanie określonego polecenia w celu przetworzenia pliku z przekazaniem pliku jako argumentu (gdzie{}
jest standardowymfind
symbolem zastępczym dla bieżącego pliku) i wieloma innymi, więc proszę przeczytać stronę podręcznika dlafind
.źródło