-print
є типовою дією . Деякі find
предикати розглядаються як дії на відміну від фільтрів або умов . Наприклад, -type f
це не дія. -exec
це дія, хоча вона також може бути використана як умова.
Дії включають в себе -print
, -exec
і -ok
. Деякі find
реалізації мають інші нестандартні предикати дії , такі як -print0
, -printf
, -execdir
, -okdir
, -ls
...
find files <some-predicates>
Якщо жодна з дій<some-predicates>
утримання не еквівалентна:
find files \( <some-predicates> \) -print
(зверніть увагу на дужки, які є важливими, якщо є деякі -o
оператори).
Коли ви сумніваєтесь, найкраще використовувати -print
явно (або -exec printf '%s\0' {} +
(або -print0
там, де це можливо), щоб результат був оброблений після).
Дія за замовчуванням -print
задається POSIX. Деякі старі find
реалізації вимагають явного-print
, але вони зазвичай не зустрічаються в дикій природі в наш час.
Також зауважте, що деякі find
реалізації дозволяють опускати files
, у цьому випадку вони за замовчуванням шукають пошук у поточному каталозі. Тобто для них
find
еквівалентно
find .
find . -print
Однак це не є стандартним, тому його краще уникати.
На більш детальному (і корисному) кінці спектру деякі find
реалізації також дозволяють передавати шляхи файлів як аргумент до -f
параметра, як у:
find -f "$file1" -f "$file2" -print
Вони є єдиними find
реалізаціями, які дозволяють пропускати довільні шляхи до файлу find
. Інші реалізації не можуть прийняти шляхи до файлів, наприклад, !
або -print
... тому find "$file" -print
(або навіть find -- "$file" -print
) припускається, що $file
це не ім'я find
предиката (або опції в першому випадку).
На жаль, це не є стандартним і не портативним.