Szukam pliku „WSFY321.c” w ogromnej hierarchii katalogów.
Zwykle używam GNU find : find . -name "WSFY321.c"
ale nie znam przypadku, może to być wielka, mała litera lub połączenie obu.
Jak najłatwiej znaleźć ten plik?
Czy jest coś lepszego niż find . | grep -i "WSFY321.c"
?
-type f
flagi, aby nie zawracało sobie głowy patrzeniem na nazwę, jeśli i-węzeł jest katalogiem. Ale to pedantyczny poziom optymalizacji ...find . -iname \*WSFY321.c\* -type f
Z GNU find lub innymi wersjami find, które go mają:
Z innymi wersjami:
Lub kompromis, który jest wolniejszy, ale łatwiejszy do wpisania:
Lub w Zsh:
źródło
grep
wersja jest filtrowany tylko górną część obudowy i nie rozumie „[^ /]” .. (nie /)*
po/
wersji bash. Miałem na myśligrep -i
. Używam[^/]*
raczej,.*
aby nie łapać plików w katalogach, których nazwa zaczyna się odWSFY
.shopt -s extglob nocaseglob globstar; printf '%s\n' **/WSFY321.c
... Przypuszczam, że dlatego nazywa się NOCASE glob : to działa tylko w kontekście glob (a przynajmniej tak się wydaje).Dwa rozwiązania dla macOS:
Za pomocą GNU
find
:Za pomocą GNU
sed
:źródło