Помогите пожалуйста написать скрипт

Есть HDD с дистрибутивами для разных осей. На нём накопилась куча каталогов и файлов с неверными правами доступа.
Решил привести всё в порядок но вручную или через файловый менеджер нереально. Начал писать простенький скриптик для баша и нарвался на проблему с которой не могу справиться. Делаю:

find "$dir" -type f | xargs -n 1 -I {} chmod 0644 "{}"

И получаю:

xargs: unmatched одинарная quote; by default quotes are special to xargs unless you use the -0 option

Понимаю что дело в названиях виндузятных файлов но как с этим справиться не знаю. Помогите пожалуйста.

А chmod +w -R не подойдёт?

А chmod +w -R не подойдёт?

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

Дык ведь надо на каталоги и

Дык ведь надо на каталоги и на файлы разные права выставлять ?

Мышка дура, прав был Суворов.

Ну если права на исполнение /

Ну если права на исполнение / открытие каталога стоят правильные, то можно обойтись и этим.

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

В том то и дело что на

В том то и дело что на каталоги правильно стоят, а вот на файлы нет. Куча ненужных исполняемых. Можно было бы без скрипта обойтись не стал бы огород городить. И вообще, что тут обсуждать, мне помощь нужна от тех кто в shell разбирается, я не очень. Проклятая лень.

P.S. А кстати что такое +w ?

Мышка дура, прав был Суворов.

Лень, матушка ;)

find ${dir} -type f -executable -print0 | /usr/bin/xargs -0 /bin/chmod a-x
find ${dir} -type f ! -writable -print0 | /usr/bin/xargs -0 /bin/chmod u+w

Так подойдёт?

тут xargs не нужен find

тут xargs не нужен

find "$dir" -type f -exec chmod 0644 '{}' \;

Здорово ! Спасибо огромное,

Здорово ! Спасибо огромное, сработало. Пойду переварю.

Мышка дура, прав был Суворов.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".