Не надо.
Если вы действительно хотите это сделать:
find / -x -name `*.doc` -type f -print0 | xargs -0 chmod 777
Я не проверял это. Я не гарантирую, что версии команд find
и xargs
для Mac поддерживают все эти параметры; Я привык к версиям GNU findutils, которые распространены в системах Linux.
Команда find
запускается в корневом каталоге, ограничивая себя (-x
) текущей файловой системой, выбирает файлы, имена которых заканчиваются на .doc
, и печатает их, разделенные нулевыми символами. Последнее необходимо, если у вас есть файлы или каталоги, имена которых содержат пробелы. Параметр -x
эквивалентен параметру -xdev
в некоторых других версиях find
.
Если вы хотите сопоставить файлы, имена которых указаны в .Doc
, .DOC
и т. Д., Используйте -iname '*.doc'
, а не -name '*.doc'
.
Команда xargs
берет этот список файлов, разделенных нулями, и выполняет chmod 777
для каждого из них, разбивая список на части, которые не будут переполнять командную строку chmod
.
Позвольте мне еще раз подчеркнуть, что:
Я не тестировал указанную выше команду. В настоящее время у меня нет доступа к системе MacOS; Я только что прочитал соответствующие страницы руководства в Интернете. Если вы хотите выполнить пробный прогон, замените xargs
на echo xargs
; он напечатает команды, которые он будет выполнять (ожидайте много вывода с очень длинными строками). Или замените xargs
на xargs -n 1 echo
, чтобы отображать по одной строке для каждого файла.
Во-первых, делать это - плохая идея. 777
дает разрешение на чтение, запись и выполнение каждому пользователю в системе. .doc
файлы не являются исполняемыми; давать им разрешение на выполнение не имеет смысла в Unix-подобной системе. 644
, вероятно, будет более разумным значением (чтение / запись для владельца, только чтение для всех остальных).
person
Keith Thompson
schedule
06.02.2014