В дополнение к ответам, приведенным в комментариях, вы также должны отметить, что ваш скрипт разбивается на любые имена файлов с пробелами в них.
Вы можете сделать все это одной командой, используя find
, вместо того, чтобы пытаться анализировать список имен файлов, выводимый из find
. Намного более надежный; обрабатывает имена файлов независимо от специальных символов или пробелов.
find "$1" -type f -exec chown "$2" {} \; -exec chmod 600 {} \;
Обратите внимание, что если chown
не работает для данного файла, chmod
не будет запущен для этого файла. Вероятно, вы в любом случае хотите именно такого поведения.
Поскольку вы уже выполнили ошибочную команду, которая удаляла разрешения на выполнение из каталога «Документы», вам необходимо добавить обратно разрешения на выполнение:
chmod u+x Documents
Если есть другие каталоги, для которых были ошибочно удалены разрешения на выполнение, вы сможете исправить их с помощью:
find Documents -type d -exec chmod u+x {} \;
Я не думаю, что вам это понадобится, однако, поскольку после удаления разрешений на выполнение из «Документов» ни один из его подкаталогов не будет доступен, поэтому разрешения на выполнение из них не будут удалены.