Z strony findutils
find
podręcznika :
Jeśli nie podano żadnego wyrażenia, -print
używane jest wyrażenie (ale prawdopodobnie powinieneś rozważyć użycie -print0
zamiast tego).
( -print
jest find
wyrażeniem.)
Dokumentacja POSIX potwierdza to:
Jeśli nie ma wyrażenia , jako wyrażenie należy użyć opcji -print .
find .
Jest więc dokładnie równoważne z find . -print
; pierwszy nie ma wyrażenia, dlatego -print
jest dodawany wewnętrznie.
Wyjaśnienie tego, co -print
dzieje się dalej na stronie podręcznika:
-print
Prawdziwe; wypisz pełną nazwę pliku na standardowym wyjściu, a następnie nowy wiersz. Jeśli przesyłasz dane wyjściowe polecenia find do innego programu i istnieje niewielka szansa, że pliki, których szukasz, mogą zawierać nowy wiersz, powinieneś poważnie rozważyć skorzystanie z -print0
opcji zamiast -print
. Zobacz sekcję NIEZWYKŁE PLIKI, aby uzyskać informacje na temat obsługi nietypowych znaków w nazwach plików.
-print
jest domyślną akcją . Niektórefind
predykaty są traktowane jako działania w przeciwieństwie do filtrów lub warunków . Na przykład-type f
nie jest działaniem.-exec
jest działaniem, nawet jeśli może być również użyte jako warunek.Działania obejmują
-print
,-exec
i-ok
. Niektórefind
implementacje mają inne niestandardowe działania Podobnie jak predykaty-print0
,-printf
,-execdir
,-okdir
,-ls
...Jeżeli żadne działanie
<some-predicates>
zawierające nie jest równoważne z:(zwróć uwagę na nawiasy powyżej, które są ważne, jeśli istnieją
-o
operatory).W razie wątpliwości najlepiej jest użyć
-print
jawnie (lub-exec printf '%s\0' {} +
(lub-print0
jeśli są dostępne), aby dane wyjściowe mogły zostać przetworzone później).Domyślną
-print
akcję określa POSIX. Niektóre starefind
implementacje wymagały wyraźnego-print
, ale obecnie nie można ich znaleźć na wolności.Zauważ również, że niektóre
find
implementacje pozwalają na pominięciefiles
, w którym to przypadku domyślnie przeszukują bieżący katalog. To dla nichjest równa
Nie jest to jednak standardowe, więc najlepiej go unikać.
Na bardziej szczegółowym (i użytecznym) końcu spektrum niektóre
find
implementacje pozwalają również na przekazywanie ścieżek plików jako argumentów do-f
opcji jak w:Są to jedyne
find
implementacje, które umożliwiają przekazywanie dowolnych ścieżek plikówfind
. Inne implementacje nie akceptują ścieżek plików takich jak!
lub-print
... więcfind "$file" -print
(a nawetfind -- "$file" -print
) zakłada, że$file
nie jest to nazwafind
predykatu (lub opcji w pierwszym przypadku).Niestety to też nie jest standardowe ani przenośne.
źródło
Są takie same, oba zapisują całą hierarchię katalogów z bieżącego katalogu.
Z POSIX znajdź dokumentację :
źródło
W Linuksie nie ma różnicy, ale inne systemy (na przykład AIX) potrzebują,
-print
jeśli chcesz, aby wynik polecenia był wyświetlany na ekranie.źródło
find
go nie potrzebuje. AIX jest zgodny z POSIX od dziesięcioleci.Przez wiele lat polecenie find nie miało domyślnej akcji. Częstym błędem było zapominanie o dodaniu opcji -print do polecenia find. Do dziś piszę to z przyzwyczajenia.
Ale w pewnym momencie została dodana jako akcja domyślna, więc teraz
find .
ifind . -print
są równoważne.źródło
Czasami przydaje się
-print
jawne użycie podczas wykonywania innej akcji, aby nazwa pliku była wyświetlana podczas wykonywania tej akcji.byłoby podobne do
gdzie
-print
odpowiada-v
. Jeśli tego nie zrobisz,-print
nazwy plików nie będą wyświetlane.Nawiasem
rm
mówiąc, aby komenda była jeszcze bardziej podobna, najpierw wydaj tę komendę Bashco spowoduje
*
dopasowanie plików kropek (ukrytych).źródło