Como aplicar o comando CHMOD a qualquer arquivo com um nome específico recursivamente no Linux?

4

Eu preciso saber como aplicar um comando CHMOD apenas para arquivos que tenham um nome específico recursivamente?

chmod 755 -R filename

Algo como acima, mas deve se aplicar a qualquer filename que exista em qualquer subpasta.

    
por Camsoft 18.01.2010 / 17:15

3 respostas

13

Isto irá encontrar todos os arquivos nomeados filename, recursivamente a partir do diretório atual, e passá-los para chmod .

find -name filename | xargs chmod 755

Veja as páginas de manual para find e xargs para opções mais avançadas. Em particular, observe o -print0 flag e o correspondente -0 to xargs se obtiver erros sobre arquivos com espaços no nome.

    
por 18.01.2010 / 17:20
4

Há também um parâmetro exec no find que fará o mesmo:

find . -name filename -exec chmod 755 {} \;
    
por 18.01.2010 / 17:33
1

Você pode obter o melhor dos dois mundos se usar o operador + para encontrar para executar chmod em muitos arquivos de uma só vez.

find . -name filename -exec chmod 755 '{}' +

Você deve sempre colocar um ' em torno do seu {} , caso contrário, um nome de arquivo com um espaço nele poderia atrapalhar as coisas. Neste caso, não é um problema, mas eu tenho o hábito de fazê-lo.

    
por 25.01.2010 / 11:54