usando o comando cat para copiar o conteúdo de um arquivo para todos os arquivos em um diretório (recursivamente) [fechado]

0

Como poderíamos usar o comando cat para copiar o conteúdo de um arquivo para todos os arquivos em um diretório (recursivamente - quero dizer, cada arquivo)?

    
por learner 21.07.2018 / 10:42

1 resposta

0

Para sobrescrever cada arquivo em uma hierarquia de diretório inteira com o conteúdo do arquivo data :

find . -type f ! -path './data' -exec sh -c 'tee "$@" <data >/dev/null' sh {} +

Se você quiser anexar o conteúdo de data , use tee -a acima.

O ! -path ./data é para evitar a modificação do arquivo que estamos lendo.

O shell filho receberá vários nomes de caminhos de find e usará tee para distribuir o conteúdo de data para esses arquivos.

Para usar cat em vez de tee :

find . -type f ! -path './data' -exec sh -c '
    for pathname do
        cat data >"$pathname"
    done' sh {} +

Aqui, para anexar os dados, use >> no lugar de > .

Execute isso em um diretório em que seja seguro fazer isso. Executá-lo em seu diretório home destruirá todos os seus arquivos. Para recuperar-se disso, você precisará restaurar a partir de um backup recente. Nunca execute comandos copiados e colados da Internet, sem saber o que eles fazem ou podem fazer.

Relacionados:

por 21.07.2018 / 11:13

Tags