Znaleźć wszystkie pliki, których nazwa zaczyna się od określonego ciągu?


148

Mam katalog z około 100000 plików i chcę wykonać pewne funkcje na wszystkich plikach zaczynających się od określonego ciągu, który może pasować do dziesiątek tysięcy plików.

próbowałem

ls mystring*

ale zwraca to błąd basha „Za dużo argumentów”. Mój następny plan polegał na użyciu

find ./mystring* -type f

ale to ma ten sam problem.

Kod musi wyglądać mniej więcej tak

for FILE in `find ./mystring* -type f`
do
    #Some function on the file
done

Zamiast forpętli powinieneś podłączyć rurę finddo while.
Wstrzymano do odwołania.

Odpowiedzi:


277

posługiwać się

find . -name 'mystring*'

10
i wykonać jakąś funkcję "find. -name 'mystring *' -exec [polecenie]" na przykład delete "find. -name 'mystring *' -exec rm {} \;"
Eldar

2
Gdzie {} jest symbolem zastępczym nazwy pliku :-) (abyś mógł konstruować własne akcje)
Sergio Tulentsev

1
Wydaje się, że zwraca wszystkie wyniki zawierające ciąg?
Brian Z

7
... lub find . -iname 'mystring*'do wyszukiwania bez rozróżniania wielkości liter.
Frank Nocke

OP odnosi się do pojedynczego katalogu, więc wstaw -maxdepth 1przed, -nameaby ograniczyć znajdowanie do bieżącego folderu
jacanterbury

27
ls | grep "^abc"  

da ci wszystkie pliki zaczynające się (co jest dokładnie wymagane przez OP) od podciągu abc.
Działa tylko w bieżącym katalogu, podczas gdy finddziała rekurencyjnie w podfolderach.

Aby użyć findtylko dla plików zaczynających się od twojego ciągu, spróbuj

odnaleźć . -name 'abc' *


4

Jeśli chcesz ograniczyć wyszukiwanie tylko do plików, należy rozważyć użycie -type fw wyszukiwaniu

spróbuj użyć również -inamedo wyszukiwania bez rozróżniania wielkości liter

Przykład:

find /path -iname 'yourstring*' -type f

Możesz także wykonać pewne operacje na wynikach bez znaku potoku lub xargs

Przykład:

Wyszukaj pliki i pokaż ich rozmiar w MB

find /path -iname 'yourstring*' -type f -exec du -sm {} \;
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.