Как исключить скрытые файлы в рекурсивном chmod?

3 ответа

Не с chmod один. Необходимо будет использовать find:

find some_dir -name '.?*' -prune -o -exec chmod 755 {} +

Или с zsh (или ksh93 -G, или с tcsh после set globstar) globbing:

chmod 755 -- some_dir some_dir/**/*

(можно также сделать это с fish или bash -O globstar, но остерегайтесь этого bash версии до 4,3 и fish следуйте за символьными ссылками при убывании каталогов. Это было частично зафиксировано в ударе 4.3, в котором Вы будете все еще получать файлы в символьных ссылках на каталоги, но не больше в subdirs тех как в 4,2, и полностью зафиксированный в 5,0),

Вы уверены, что хотите сделать весь исполняемый файл файлов хотя?

4
27.01.2020, 22:06
  • 1
    я изменяю существующий сценарий и пока я не мог выяснить, почему они делают chmod во-первых, это должно будет сделать :) –  Krishnaraj 24.10.2013, 12:47
find /Your/Folder -type d -regextype posix-extended -regex ^[^\.].*$ -exec chmod -R 755 {}

^[^\.] : исключит все имена файлов, начинающиеся с точки.

-1
27.01.2020, 22:06
  • 1
    [ и * потребность заключается в кавычки для оболочки, . не делает. Это будет всегда соответствовать так или иначе с тех пор -regex соответствует целому пути, не имени файла, и целый путь запускается с /Your/Folder, не точка. –  Stéphane Chazelas 24.10.2013, 13:04

Пробовал с помощью команды «Ниже», и она работала нормально

find path| sed -n '/^\.\/\./!p'|awk '{print "chmod -R" " "  "755" " " $1}'|sh
0
27.01.2020, 22:06

Теги

Похожие вопросы