Czasami widzę następujące polecenie:
find . -name * -exec ls -a {} \;
Zostałem poproszony o wykonanie tego.
Co to {} \;
znaczy tutaj?
-name *
jest gorszy niż zbędny. Ponieważ *
nie jest cytowany, powłoka rozwija go do listy nazw plików w bieżącym folderze, a spacje są niepoprawnie traktowane, co prowadzi do nieoczekiwanych wyników lub komunikatu o błędzie. Dodatkowo find
ma wiele funkcji, jedną z nich jest wyświetlanie listy plików; pozwala to uniknąć konieczności używania -exec
. Np. Możesz użyć find . -print
lub find . -ls
. Wreszcie, istnieją dwa sposoby, aby uciec średnik: albo jak to było z ukośnik, \;
lub podając: ';'
. Używaj tego, z czym czujesz się bardziej komfortowo.
-name *
jest zbędny.