Cały czas używam funkcji lokalizowania, aby znaleźć pliki, których nazwę znam, lokalizacja jest bardzo szybka i uwielbiam to. Znalezienie ostatnio utworzonych plików jest świetne, zwykle z ostatnio utworzonymi plikami wiem, gdzie w zasadzie zostały utworzone, więc nie muszę przeszukiwać całego systemu plików.
Kiedy zapomniałem lokalizacji katalogu, ani znalezienie, ani lokalizacja nie wydają się idealne.
Lokalizowanie zawsze wyrzuca zbyt dużo informacji, ponieważ każdy plik w katalogu również pasuje do lokalizacji. Na przykład, jeśli szukałem katalogu o nazwie log gdzieś w moim systemie plików, zlokalizowanie dziennika zwróciłoby mnóstwo wyników. Jeśli zrobię to samo z find, find / -name log -type d find potrzebuje minut, aby uruchomić i wyrzuca różnego rodzaju błędy uprawnień za każdym razem, gdy napotka folder, którego nie może odczytać.
Czy jest lepszy sposób?
Odpowiedź: Więc trzymam się grep, dopóki nie znajdę czegoś innego:
locatedir () {
for last; do true; done
if [[ $last == *\/* ]]
then
locate $@ | grep "${last}\$"
else
locate $@ | grep "/${last}\$"
fi
}
locate
ma własną wbudowaną funkcję wyrażeń regularnych:-r
lub--regex
... pełny zakres opcji znajduje się w: info locate'
:locate -r /log$
wystarczy.Czy próbowałeś:
locate /home/insertusernamehere/*/filename
?lub
locate file | grep -i '^/home/.*/examplesubdirectory'
?czy jakaś odmiana tego?
źródło
grep
nie jest to konieczne i jak widać w pierwszej sugerowanej opcji, nie są też wyrażenia regularne.Oto jest
źródło