Substituir vários arquivos recursivamente

1

Eu tenho uma estrutura de arquivos como esta:

experiment/
├── foo.txt
├── source-foo.txt
└── subdir
    └── foo.txt

Eu quero pegar o arquivo source-foo.txt e substituir os outros foos por ele. Assim como fazendo cp source-foo.txt foo.txt e cp source-foo.txt subdir/foo.txt ambos de uma vez. Eu estava pensando que eu poderia usar find para esse propósito, algo como:

cp source-foo.txt $(find . -iname foo.txt)

Mas o erro retorna um erro:

cp: target „foo.txt“ is not a directory

Como faço isso funcionar?

    
por Tom Karger 20.03.2016 / 16:03

1 resposta

1

Com o GNU find:

cd experiment
find . -name "foo.txt" -exec echo cp -v source-foo.txt {} \;

Se tudo estiver correto, remova echo .

Saída com echo :

cp -v source-foo.txt ./foo.txt
cp -v source-foo.txt ./subdir/foo.txt

Saída sem echo :

'source-foo.txt' -> './foo.txt'
'source-foo.txt' -> './subdir/foo.txt'
    
por 20.03.2016 / 17:27