Localiza arquivos em diretórios específicos e substitui a frase

1

Eu tenho uma estrutura de diretórios dos seguintes itens

.
├── dir1
│   ├── a
│   │   ├── x.file
│   │   ├── y.file
│   │   └── z.file
│   ├── b
│   │   ├── x.file
│   │   ├── y.file
│   │   └── z.file
│   └── c
│       ├── x.file
│       ├── y.file
│       └── z.file
└── dir2
    ├── a
    │   ├── x.file
    │   ├── y.file
    │   └── z.file
    ├── b
    │   ├── x.file
    │   ├── y.file
    │   └── z.file
    └── c
        ├── x.file
        ├── y.file
        └── z.file

etc.

Existem arquivos chamados x.file em pastas chamadas b que eu quero alterar uma frase em cada. Como posso fazer isso sem alterar os outros arquivos com o nome x.file em outros diretórios e pastas da maneira mais rápida possível?

Obrigado.

    
por The Inquiring Robot 31.07.2013 / 05:59

1 resposta

1

Experimente o seguinte script:

#!/bin/bash

find . -type d -name "b" | while read Folder; do
    find "$Folder" -type f -name "a.xyz" | while read File; do
        sed -i 's/phrase1/phrase2/g' "$File"
    done
done
    
por Adobe 31.07.2013 / 06:26