Как изменить права доступа к определенному шаблону файла в подпапки моего текущего каталога?
Используя chmod, я делаю chmod +x *.sh в текущем каталоге, но что, если я хочу изменить все файлы, включая файлы в подпапках с расширением sh файла?.
chmod +x -R * будет работать, но мне нужно что-то большее, как chmod +x -R *.sh
Ответ 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 строит свои командные строки. Внутри команды допускается только один экземпляр {}. Команда запускается в стартовом каталоге.