<Poprzedni | Spis treści | Następne>
Predefiniowane działania
Wykonajmy trochę pracy! Posiadanie listy wyników z naszych odnaleźć polecenie jest przydatne, ale tak naprawdę chcemy działać na pozycjach na liście. Na szczęście, odnaleźć pozwala na wykonywanie działań w oparciu o wyniki wyszukiwania. Istnieje zestaw predefiniowanych akcji i kilka sposobów stosowania akcji zdefiniowanych przez użytkownika. Najpierw przyjrzyjmy się kilku predefiniowanym działaniom:
Tabela 17-6: Wstępnie zdefiniowane akcje wyszukiwania
Opis działania
Opis działania
-delete Usuń aktualnie pasujący plik.
-ls Wykonaj odpowiednik ls -dils w pasującym pliku.
Dane wyjściowe są wysyłane na standardowe wyjście.
-print Wypisuje pełną ścieżkę pasującego pliku na standardowe wyjście. Jest to akcja domyślna, jeśli nie określono żadnej innej akcji.
-quit Wyjdź po dopasowaniu.
Podobnie jak w przypadku testów, akcji jest znacznie więcej. Zobacz odnaleźć strona podręcznika, aby uzyskać szczegółowe informacje. W naszym pierwszym przykładzie zrobiliśmy to:
znajdź ~
znajdź ~
który wygenerował listę wszystkich plików i podkatalogów zawartych w naszym katalogu domowym. Spowodowało to utworzenie listy, ponieważ -wydrukować akcja jest implikowana, jeśli nie określono żadnej innej akcji. Zatem nasze polecenie można również wyrazić jako:
znajdź ~ -print
znajdź ~ -print
Możemy użyć odnaleźć aby usunąć pliki spełniające określone kryteria. Na przykład, aby usunąć pliki, które
mamy rozszerzenie pliku „.BAK” (które jest często używane do oznaczania plików kopii zapasowych), możemy użyć tego polecenia:
znajdź ~ -wpisz f -nazwa '*.BAK' -usuń
znajdź ~ -wpisz f -nazwa '*.BAK' -usuń
W tym przykładzie każdy plik w katalogu domowym użytkownika (i jego podkatalogach) jest przeszukiwany pod kątem nazw plików kończących się na .BAK. Po znalezieniu są usuwane.
Ostrzeżenie: Nie trzeba dodawać, że powinieneś zachować szczególną ostrożność podczas korzystania z -kasować działanie. Zawsze najpierw przetestuj polecenie, zastępując
-print akcja dla -delete, aby potwierdzić wyniki wyszukiwania.
Zanim przejdziemy dalej, przyjrzyjmy się jeszcze raz, jak operatory logiczne wpływają na działania. Rozważ następujące polecenie:
znajdź ~ -wpisz f -nazwa '*.BAK' -print
znajdź ~ -wpisz f -nazwa '*.BAK' -print
Jak widzieliśmy, to polecenie będzie szukać każdego zwykłego pliku (-type f), którego nazwa kończy się na .BAK (-name '*.BAK') i wyśle względną ścieżkę każdego pasującego pliku na standardowe wyjście (-print). Jednak powód, dla którego polecenie działa w taki sposób, jest określony przez logiczne relacje pomiędzy każdym z testów i działań. Pamiętaj, że domyślnie istnieje dorozumiana relacja -i pomiędzy każdym testem a działaniem. Moglibyśmy również wyrazić polecenie w ten sposób, aby łatwiej było dostrzec logiczne zależności:
znajdź ~ -wpisz f -i -nazwa '*.BAK' -i -print
znajdź ~ -wpisz f -i -nazwa '*.BAK' -i -print
Po całkowitym wyrażeniu naszego polecenia przyjrzyjmy się, jak operatory logiczne wpływają na jego wykonanie:
Test/działanie jest wykonywane tylko wtedy, gdy...
Test/działanie jest wykonywane tylko wtedy, gdy...
-wydrukować -type f i -name '*.BAK' mają wartość true
-nazwa '*.BAK' -Type f jest prawdą
-Type f Jest zawsze wykonywany, ponieważ jest to pierwszy test/akcja w pliku
-i związek.
Ponieważ logiczna relacja pomiędzy testami i akcjami określa, które z nich zostaną wykonane, widzimy, że kolejność testów i akcji jest istotna. Na przykład, gdybyśmy zmienili kolejność testów i działań tak, aby -wydrukować akcja była pierwsza, polecenie zachowywałoby się zupełnie inaczej:
znajdź ~ -print -i -wpisz f -i -nazwa '*.BAK'
znajdź ~ -print -i -wpisz f -i -nazwa '*.BAK'
Ta wersja polecenia wydrukuje każdy plik ( -wydrukować akcja zawsze ma wartość true), a następnie sprawdź typ pliku i określone rozszerzenie pliku.