Mover arquivos de várias subpastas para subpastas

1

Eu tenho várias pastas contendo cada arquivo como tal:

/.example1/example1.txt
/.example1/example2.txt
/.example2/example1.txt
/.example2/example2.txt
etc.

E deseja encontrar uma maneira de mover cada um dos arquivos para uma subpasta de sua pasta pai, por exemplo:

/.example1/folder/example1.txt
/.example1/folder/example2.txt
/.example2/folder/example1.txt
/.example2/folder/example2.txt
etc.

Tem alguma ideia rápida e simples para fazer isso em grandes quantidades de arquivos? Eu já tentei brincar com find , mas sem muita sorte.

    
por K. Grey 01.08.2017 / 12:46

2 respostas

1

Você pode fazer isso usando as versões GNU de find e mv assim:

find . -mindepth 2 -maxdepth 2 -type f -execdir mv -vt ./folder/. {} +

Onde restringimos find para procurar arquivos regulares com 2 níveis de profundidade e, em seguida, usando a opção -execdir para mover o (s) arquivo (s) selecionado (s) para o subdiretório folder que é adjacente ao arquivo selecionado ).

    
por 01.08.2017 / 14:57
0
find /.example1 -name example*.txt" -type f | awk -F\/ '{ for(i=1;i<=NF-1;i++) {  path=path$i"/" } } END { print "mv "$0" "path"folder/"$NF }' | sh

Faça um achado em todos os arquivos de exemplo no diretório e então analise a saída retornada usando awk, formando um comando de movimento que é executado com sh

    
por 01.08.2017 / 13:06