Rekurencyjne ls z warunkami


16

Dlaczego nie mogę użyć takiego polecenia, aby znaleźć wszystkie pliki pdf w katalogu i podkatalogach? Jak mam to zrobić? (Używam bash w Ubuntu)

ls -R *.pdf

EDYTOWAĆ

Jak w takim razie mógłbym usunąć wszystkie te pliki?

Odpowiedzi:


22

Dlaczego nie mogę użyć takiego polecenia, aby znaleźć wszystkie pliki pdf w katalogu i podkatalogach?

Symbol wieloznaczny *.pdfw poleceniu jest rozszerzany o bashwszystkie pasujące pliki w bieżącym katalogu przed wykonaniem ls.


Jak mam to zrobić? (Używam bash w Ubuntu)

znajdź to twoja odpowiedź.

find . -name \*.pdf

to rekursywna lista plików pdf. -inamejest dopasowanie bez rozróżniania wielkości liter, więc

find . -iname \*.pdf

wyświetla wszystkie pliki .pdf, w tym na przykład foo.PDF

Możesz także użyć ls na przykład do ograniczonej liczby podfolderów

ls *.pdf */*.pdf

znaleźć wszystkie pliki pdf w podfolderach (pasuje do bar / foo.pdf, nie do bar / foo / asdf.pdf i nie do foo.PDF).

Jeśli chcesz usunąć pliki znalezione przy pomocy find, możesz użyć

find . -iname \*.pdf -delete

1
Na wypadek, gdybyś chciał otrzymać dane wyjściowe podobne do ls -lpolecenia, pokazujące rozmiar pliku, własność, datę itp., Możesz użyć findz -lsopcją, np.find . -name \*.pdf -ls
RFVoltolini

2

Jak powiedzieli inni, odpowiedź jest odpowiedzią.

Teraz, aby odpowiedzieć na drugą część.

  • Jak w takim razie mógłbym usunąć wszystkie te pliki?

    odnaleźć . -iname * .pdf -exec rm {} \;

Powinien to zrobić.


2
Musisz zacytować glob, aby nie został on przedwcześnie rozszerzony.
Wstrzymano do odwołania.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.