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

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

Preciso saber como aplicar um comando CHMOD apenas a arquivos que possuem um nome específico de forma recursiva?

chmod 755 -R filename

Algo como acima, mas deve se aplicar a qualquer um filenameque exista em qualquer subpasta.

Responder1

Isso encontrará todos os arquivos nomeados filename, recursivamente do diretório atual, e os transmitirá para chmod.

find -name filename | xargs chmod 755

Consulte as páginas de manual findpara xargsopções mais avançadas. Em particular, observe o -print0sinalizador e correspondente -0se xargsvocê receber erros sobre arquivos com espaços no nome.

Responder2

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

find . -name filename -exec chmod 755 {} \;

Responder3

Você pode obter o melhor dos dois mundos se usar o +operador find para executá-lo chmodem vários arquivos ao mesmo tempo.

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

Você deve sempre colocar um 'em volta do seu {}, caso contrário, um nome de arquivo com um espaço pode atrapalhar as coisas. Neste caso não é problema, mas tenho o hábito de fazer isso.

informação relacionada