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
for
pętli powinieneś podłączyć ruręfind
dowhile
.Odpowiedzi:
posługiwać się
źródło
find . -iname 'mystring*'
do wyszukiwania bez rozróżniania wielkości liter.-maxdepth 1
przed,-name
aby ograniczyć znajdowanie do bieżącego folderuda 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
find
działa rekurencyjnie w podfolderach.Aby użyć
find
tylko dla plików zaczynających się od twojego ciągu, spróbujźródło
Jeśli chcesz ograniczyć wyszukiwanie tylko do plików, należy rozważyć użycie
-type f
w wyszukiwaniuspróbuj użyć również
-iname
do wyszukiwania bez rozróżniania wielkości literPrzykład:
Możesz także wykonać pewne operacje na wynikach bez znaku potoku lub xargs
Przykład:
Wyszukaj pliki i pokaż ich rozmiar w MB
źródło