Simultaneamente movendo e renomeando arquivos no Red Hat

0

Estou executando o Red Hat Release 6.5 (Santiago). O problema que estou enfrentando é que eu tenho um monte de arquivos na seguinte estrutura de diretórios:

temp2
├── ABC
│   └── temp2
│       └── temp2.txt
└── DEF
    └── temp2
        └── temp2.txt

Estou tentando alterá-lo para a estrutura abaixo, mas não tenho ideia de como realizá-lo.

temp2
├── ABC.txt
└── DEF.txt

Qualquer ajuda seria muito apreciada!

    
por Roney Michael 02.10.2014 / 00:50

2 respostas

1

Você precisa criar um pequeno arquivo de script para fazer sua renomeação / movimentação: chamá-lo de rnmv , digamos, e colocar o seguinte comando nele:

f="${1#./}"; echo mv "$f" "${f%%/*}.${f##*.}"

Não se esqueça de chmod +x rnmv . Em seguida, vá para o diretório raiz e chame rnmv de um comando find :

cd {wherever temp2 root is}
find . -name "temp2.txt" -exec rnmv "{}" \;

Quando você estiver feliz que os comandos mv corretos estão sendo criados, remova o echo de rnmv e sua renomeação / movimentação será feita.

Uma tarefa final é remover os subdiretórios vazios:

find . -name temp2 -exec rmdir "{}" \;

Isso é seguro, pois rmdir não removerá um diretório com arquivos nele. Dependendo da ordem de encontrar os diretórios, talvez seja necessário repetir o comando para estruturas como ABC / temp2 / temp2, já que o temp2 não estará vazio até que o segundo seja excluído.

Observe que, se o ABC, digamos, tiver mais de um arquivo temp2.txt em seus subdiretórios, cada comando mv sobrescreverá o ABC.txt anterior e somente o último encontrado será deixado depois.

    
por 02.10.2014 / 02:24
0
mv /temp2/ABC/temp2/temp2.txt /temp2/ABC.txt
mv /temp2/DEF/temp2/temp2.txt /temp2/DEF.txt

Dependendo de onde o diretório temp2 de alto nível está - não posso dizer a partir do seu exemplo.

    
por 02.10.2014 / 01:10

Tags