Проблема в том, что *
интерпретируется вашей оболочкой и расширяется до файла с именем TEST_FILE
, который находится в вашем текущем рабочем каталоге, поэтому вы говорите find
выполнить команду с именемTEST_FILE
который не существует.Я не уверен, что вы пытаетесь достичь с помощью этого *
, вы должны просто удалить его.
Кроме того, вы должны использовать идиому -exec program '{}' \+
вместо -exec program '{}' \;
, чтобы find
не разворачивает новый процесс для каждого файла.С ;
новый процесс разветвляется для каждого файла, тогда как с +
он разветвляется только на один процесс и передает все файлы в одной командной строке, что для простых программ, таких как chmod
, гораздо более эффективно.
Наконец, chmod
может делать рекурсивные изменения самостоятельно с флагом -R
, поэтому, если вам не нужно искать конкретные файлы, просто сделайте это:
chmod -R 777 /Users/Test/Desktop/PATH