Przejdź do treści

Find w wierszu poleceń

Alternatywne opcje dla find w wierszu poleceń (Windows):

findstr: To bardziej zaawansowane narzędzie do wyszukiwania wzorców tekstowych niż find. Obsługuje wyrażenia regularne (z pewnymi ograniczeniami), co daje większą elastyczność w wyszukiwaniu.

dir | findstr "2023/10"

dir | findstr /I "plik.txt" (wyszukiwanie bez uwzględniania wielkości liter)

dir | findstr /R "^d.*\.txt$" (wyszukiwanie plików zaczynających się od 'd' i kończących na '.txt' - użycie wyrażenia regularnego)

Polecenie 'where'

where: To polecenie służy głównie do lokalizowania plików na podstawie wzorca, ale może być również użyte do filtrowania wyjścia innych poleceń.

dir /B | where {$_.LastWriteTime -like "*2023*"}

W tym przykładzie używamy PowerShell (który jest domyślnie dostępny w nowszych wersjach Windows) wewnątrz where, aby filtrować daty modyfikacji plików. /B w dir powoduje wyświetlenie tylko nazw plików.

PowerShell Select-String

Jeśli czujesz się komfortowo z PowerShell, Select-String jest potężnym narzędziem do wyszukiwania wzorców w tekście, podobnym do grep w systemach Unix/Linux.

dir | Select-String -Pattern "2023-11"
dir | Select-String -Pattern "ważny plik" -CaseSensitive
dir | Select-String -Pattern "\.log$"

Alternatywne opcje dla find w wierszu poleceń (Linux/macOS):

grep

grep: To jedno z najczęściej używanych narzędzi do wyszukiwania wzorców tekstowych w systemach uniksowych. Jest niezwykle wszechstronne i oferuje wiele opcji.

ls -l | grep "Oct 2023"
ls -l | grep -i "plik.txt" # Wyszukiwanie bez uwzględniania wielkości liter
ls -l | grep "^-" # Wyświetl tylko pliki (linie zaczynające się od '-')

awk

awk: To potężne narzędzie do przetwarzania tekstu wiersz po wierszu. Możesz go użyć do filtrowania na podstawie różnych kryteriów, nie tylko wzorców tekstowych.

ls -l | awk '/Oct/' # Podobnie jak grep "Oct"
ls -l | awk '$5 > 1000000' # Wyświetl pliki większe niż 1MB (zakładając, że rozmiar jest w 5. kolumnie)

sed

sed: To edytor strumieniowy, który może być również używany do filtrowania i transformacji tekstu.

ls -l | sed -n '/Nov/p' # Wyświetl tylko linie zawierające "Nov"

Wyszukiwanie w wierszu poleceń

Poniżej omówienie materiału.

Alternatywy dla dir | find

Wielu z nas, pracując z wierszem poleceń, polega na prostym i skutecznym połączeniu dir | find "szukany tekst" (w systemach Windows) do szybkiego filtrowania wyników. To świetny sposób na znalezienie konkretnych plików lub informacji w długiej liście. Ale co, jeśli potrzebujemy większej elastyczności, wyszukiwania bez uwzględniania wielkości liter, a może nawet oparcia się na datach lub rozmiarach plików? Na szczęście istnieje kilka innych potężnych narzędzi, które mogą znacząco rozszerzyć nasze możliwości przeszukiwania w terminalu.

Dla użytkowników Windows:

Zamiast polegać wyłącznie na find, warto poznać bliżej jego starszego brata - findstr. Ten niepozorny program oferuje zaawansowane opcje wyszukiwania wzorców, w tym podstawowe wyrażenia regularne. Możesz łatwo wyszukiwać frazy bez względu na wielkość liter (/I) lub konstruować bardziej złożone zapytania, aby znaleźć na przykład wszystkie pliki tekstowe zaczynające się od określonej litery (dir | findstr /R "^d.\*\.txt$").

Kolejnym ciekawym narzędziem jest where, które w połączeniu z elementami PowerShell (where {$\_.właściwość -operator wartość}) pozwala na filtrowanie wyników na podstawie atrybutów obiektów, takich jak data modyfikacji (LastWriteTime) czy rozmiar pliku. To otwiera zupełnie nowe możliwości precyzyjnego wyszukiwania.

Jeśli natomiast wolisz PowerShell, polecenie Select-String to prawdziwy kombajn do wyszukiwania wzorców. Oferuje bogate opcje, w tym pełne wsparcie dla wyrażeń regularnych, rozróżnianie wielkości liter i wiele innych.

Dla entuzjastów Linux i macOS:

W świecie systemów uniksowych króluje grep. To wszechstronne narzędzie jest standardem do wyszukiwania tekstu i oferuje niezliczone opcje, od prostego wyszukiwania ciągów znaków po zaawansowane dopasowywanie wzorców z użyciem wyrażeń regularnych. Flagi takie jak -i (ignoruj wielkość liter) czy -v (wyświetlaj linie, które nie pasują do wzorca) sprawiają, że grep jest niezwykle elastyczny.

Jeśli potrzebujesz czegoś więcej niż tylko prostego filtrowania wierszy, warto zainteresować się narzędziami takimi jak awk i sed.

awk pozwala na przetwarzanie tekstu kolumna po kolumnie i wykonywanie akcji na podstawie spełnionych warunków. Możesz na przykład filtrować listę plików na podstawie ich rozmiaru lub daty modyfikacji.

sed to edytor strumieniowy, który umożliwia zaawansowane manipulacje tekstem, w tym filtrowanie wierszy spełniających określone kryteria.

Podsumowanie:

Polecenie dir | find jest dobrym punktem wyjścia, ale eksploracja alternatywnych narzędzi, takich jak findstr, where (z PowerShell), Select-String (Windows) oraz grep, awk i sed (Linux/macOS), może znacząco zwiększyć Twoją efektywność w pracy z wierszem poleceń. Dzięki nim zyskasz większą kontrolę nad tym, jak wyszukujesz i filtrujesz informacje, co pozwoli Ci szybciej dotrzeć do potrzebnych danych. Zachęcam do eksperymentowania z tymi poleceniami i odkrycia ich pełnego potencjału!