Rozmyte wyszukiwanie plików w konsoli Linuksa
Czy ktoś zna sposób na szybkie wyszukiwanie rozmyte z konsoli linuxa?
Dość często spotykam się z sytuacją, w której muszę znaleźć plik w projekcie, ale nie pamiętam dokładnej nazwy pliku. W
Wysublimowany edytor tekstu
http://www.sublimetext.com/2
Nacisnąłbym Ctrl-P i wpisałbym część nazwy, która da ci listę plików do wyboru. To niesamowita funkcja, z której jestem całkiem zadowolony. Problem w tym, że przez większość czasu muszę przeglądać kod w konsoli na zdalnych maszynach poprzez ssh. Zastanawiam się więc, czy istnieje narzędzie podobne do funkcji „Go Anywhere” dla konsoli Linuksa?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
11 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
FZF
https://github.com/junegunn/fzf
przydatny. Jest to wszechstronny rozmyty przeszukiwacz napisany w Go, którego można używać z dowolną listą rzeczy: plikami, procesami, historią poleceń, gałęziami git itp.
Jego skrypt instalacyjny skonfiguruje przypisanie klawisza dla Twojej powłoki. Poniższy plik GIF pokazuje, jak to działa.
Anonimowy użytkownik
Potwierdzenie od:
Myślę, że jest to trochę bliższe temu, czego chcesz. Przygotowałem specjalną wersję cd („fcd”), która używa wyszukiwania rozmytego, aby znaleźć katalog docelowy. Super łatwe - po prostu dodaj to do swojego bashrc:
Spowoduje to dodanie * między każdą literą w wejściu, więc jeśli chcę przejść, na przykład,
Mogę po prostu wpisać dowolne z poniższych:
Używając pierwszego jako przykładu, spowoduje to wykonanie i pozwoli powłoce dowiedzieć się, co faktycznie pasuje ...
Jeśli pierwszy znak jest poprawny i zapisana jest jedna litera z każdego katalogu w ścieżce, program znajdzie to, czego szukasz. Może możesz to dostosować do swoich potrzeb? Ważnym punktem jest:
co tworzy rozmyty ciąg wyszukiwania.
Anonimowy użytkownik
Potwierdzenie od:
fasd
https://github.com/clvv/fasd
Powłoka też jest warta uwagi.
zapewnia szybki dostęp do plików i katalogów dla powłok POSIX. Inspirują go narzędzia takie jak autojump, z i v. Fasd śledzi pliki i katalogi, do których masz dostęp, dzięki czemu możesz szybko odwołać się do nich w wierszu poleceń.
Różni się nieco od pełnego wyszukiwania wszystkich plików, ponieważ wyszukuje tylko
niedawno otwarty
akta. Jest to jednak nadal bardzo przydatne.
Anonimowy użytkownik
Potwierdzenie od:
ls -R | grep -i [whatever I can remember of the file name]
Z katalogu powyżej, w którym spodziewam się, że plik będzie się znajdował - im wyżej wejdziesz w drzewo katalogów, tym wolniej będzie.
Kiedy znajdę dokładną nazwę pliku, używam jej w funkcji find:
find . [discovered file name]
Można to zwinąć do jednej linii:
(Znalazłem problem polegający na tym, że LS i grep mają alias „--color = auto”)
Anonimowy użytkownik
Potwierdzenie od:
Wyszukiwanie bez rozróżniania wielkości liter w nazwach plików zawierających .
Anonimowy użytkownik
Potwierdzenie od:
https://github.com/sharkdp/fd
to prosta, szybka i wygodna alternatywa dla wyszukiwania.
Demo ze strony GitHub projektu:
Anonimowy użytkownik
Potwierdzenie od:
AGREP
http://www.tgries.de/agrep/
lub coś innego, co używa biblioteki regex
TRE
http://laurikari.net/tre/
.
(Z ich witryny
:)
Anonimowy użytkownik
Potwierdzenie od:
Przepraszamy, jeśli znasz już i szukałeś czegoś bardziej zaawansowanego.
Anonimowy użytkownik
Potwierdzenie od:
gdzie „.” jest punktem początkowym, więc możesz zrobić coś takiego
Spowoduje to, że grep będzie szukał podanego tekstu w każdym pliku w katalogu/home/i wyświetli listę plików, które zawierają ten tekst.
Anonimowy użytkownik
Potwierdzenie od:
Cminus
https://github.com/whitebob/cminus), rozmyte narzędzie do zmiany katalogu w skrypcie bash, które używa uzupełniania bash. W pewnym sensie ogranicza się to tylko do przypadkowych ścieżek odwiedzanych, ale jest naprawdę wygodny i dość szybki.
https://i.stack.imgur.com/yEZ8e.gif
Projekt GitHub:
whitebob/cminus
https://github.com/whitebob/cminus
Wprowadzenie do YouTube:
https://youtu.be/b8Bem53Cz9A
https://youtu.be/b8Bem53Cz9A
Anonimowy użytkownik
Potwierdzenie od:
Lub to dla prostszych dopasowań podobnych do globów:
Możesz też użyć find2perl (który jest znacznie szybszy i bardziej zoptymalizowany niż find), na przykład:
Jeśli chcesz tylko zobaczyć, jak robi to Perl, usuń , a zobaczysz kod, który generuje. Nawiasem mówiąc, to bardzo dobry sposób na naukę.
Napisz też taką szybką otokę basha i wywołuj ją w dowolnym momencie:
Nazwij go na przykład , a następnie nazwij go