Unix move pastas com padrão

1

Como posso mover subpastas com um padrão para o novo local?

Exemplo de lista de fontes:

  • /data/aaa/_old/
  • /data/bbb/_old/

Os destinos devem ser:

  • /archive/aaa/_old/
  • /archive/bbb/_old/

Existe uma maneira de fazer isso com uma expressão regular e move ?

Algo como:

mv /data/(.*)/_old/(.*) /archive/$1/_old/$2
    
por Oliver 11.03.2016 / 15:46

1 resposta

1

Por muito tempo, como você não deseja a transformação de caminho complexo por regex, jyst usa regex no caminho completo para a seleção de arquivos, como em seu exemplo. Esta é uma boa ideia: link

Solução que combina find e cpio

cd /data

find . -type f -regex "/data/.*/_old/.*" -print0 | cpio -dumpl0 /archive

find . -type f -regex "/data/.*/_old/.*" -print0 | xargs -0 rm

Eu não testei, então tente em ambiente de teste.

    
por 11.03.2016 / 16:22

Tags