Ваша вторая команда верна, вам просто нужно распечатать пути. Обычно -print
не нужно упоминать, но с несколькими опциями, такими как -exec
, вы должны явно указать, что вы хотите напечатать найденные пути.
find "$DIR" -type f -exec test -w {} \; -print
Вы можете задаться вопросом: » Почему эта печать только для записи файлов? «
find
использует оценку короткого замыкания - следующая опция оценивается только в случае успешной работы предыдущей опции.
Пример: В команде find -type f -user USER
проверка -user USER
будет выполняться только для файлов, но не для каталогов, так как -type f
не выполняется для каталогов.
Опция -exec cmd
также действует как проверка - состояние выхода cmd
будет использоваться для определения того, прошла проверка или нет.
Пример: find -exec false \; -user USER
никогда не выполнит проверку -user USER
, поскольку программа false
никогда не будет выполнена успешно.
В вашем случае это означает, что -print
будет выполняться только в случае успеха test -w
.