Мне нужно убрать исполняемый флаг из всех файлов в определенном каталоге и подкаталогах. Прямо сейчас я делаю это с двухэтапным процессом
find /dir/ -type f -exec chmod ugo-x {} \;
find /dir/ -type d -exec chmod ugo+rx {} \;
Можно ли изменить первую строку, чтобы я мог удалить флаг exec из всех файлов, не входящих в каталог? Поскольку это необходимо делать на регулярной основе во многих каталогах и файлах, я бы предпочел не использовать bash-скрипт, который замедлял бы его.
@David: Сокеты, FIFO, символические ссылки, устройства и т. Д.
—
Игнасио Васкес-Абрамс,
@Ignacio: Да, но вопрос был о файлах, а не обо всех других не файловых вещах.
—
Дэвид Z
@ Дэвид: это * nix. Все это файл.
—
Игнасио Васкес-Абрамс
@Ignacio: Конечно, у всего есть путь к файловой системе, но вы не всегда можете сказать, что на самом деле все является файлом. Некоторые люди делают, но другие используют «файл» в смысле обычного файла, то есть что-то, что будет соответствовать
—
Дэвид Z
-type f
предикату find
. Для меня формулировка этого вопроса настоятельно подсказала последнее значение.
-type f
Предикат уже выбирает все файлы (или , что эквивалентно, все файлы без каталогов, так как ничего , что файл не может быть каталогом).