Подтвердить что ты не робот

Как изменить права доступа к определенному шаблону файла в подпапки моего текущего каталога?

Используя chmod, я делаю chmod +x *.sh в текущем каталоге, но что, если я хочу изменить все файлы, включая файлы в подпапках с расширением sh файла?.

chmod +x -R * будет работать, но мне нужно что-то большее, как chmod +x -R *.sh

4b9b3361

Ответ 1

используйте find:

find . -name "*.sh" -exec chmod +x {} \;

Ответ 2

Попробуйте использовать великолепную комбинацию find с xargs.

find . -iname \*.sh -print0 | xargs -r0 chmod +x

. каталог для запуска, в данном случае рабочий каталог.

Ответ 3

В современных версиях find вы получаете преимущества подхода xargs, который позволяет избежать нескольких вызовов команды (chmod). Команда немного отличается.

find . -name "*.sh" -exec chmod +x {} +

Снимите find docs в Arch 2015.09.01 ( выделение, добавленное мной):

-exec command {} +

Этот вариант действия -exec запускает указанную команду в выбранных файлах , но командная строка создается путем добавления каждого имени выбранного файла в конце; общее количество вызовов команды будет намного меньше количества сопоставленных файлов. Командная строка построена таким же образом, что xargs строит свои командные строки. Внутри команды допускается только один экземпляр {}. Команда запускается в стартовом каталоге.