Localizando o arquivo pelo nome recursivamente, excluindo-o e criando um link simbólico

2

Dado:

Estrutura de pastas como ( file.txt são arquivos de texto simples em cada diretório, não links simbólicos):

/basedir/A/file.txt
/basedir/B/file.txt
/basedir/C/file.txt

O mesmo file.txt que fica em /mydir :

/mydir/file.txt

Eu preciso de um comando que seja executado a partir de /basedir que:

  • Encontra recursivamente todos os /file.txt (em .A/ , ./B e ./C )
  • Remove os file.txt arquivos encontrados
  • Cria um link simbólico para /mydir/file.txt

Isso pode ser feito em um único comando bash?

Obrigado!

    
por temuri 13.05.2017 / 16:56

1 resposta

4

Isso fará isso:

find /basedir -type f -name file.txt -exec ln -sf /mydir/file.txt '{}' \;

Isso localiza todos os arquivos denominados file.txt em /basedir e executa ln em cada um para substituí-lo ( -f ) por um link simbólico ( -s ) para /mydir/file.txt .

    
por 13.05.2017 / 17:26

Tags