Como renomear e mover milhares de arquivos de uma só vez?

2

Eu tenho muitos arquivos que eu quero mover para pastas, seus nomes são algo como este dir1/dir2/dir3/name_of_file.ex e então talvez outro seja chamado /dir4/name_of_file2.xe

Existe alguma maneira de mover esses arquivos para o diretório dir1/dir2/dir3 e alterar o nome dele para apenas name_of_file.ex automaticamente?

Eu realmente não sei como posso explicar mais fácil .. mas eu tenho quase 1000 arquivos com nomes como TSData\Res\Catalog\Scripts\deckfoundations.txt e TSBin\Sims2.exe e o que eu quero fazer com esses arquivos é passar para a pasta TSData\Res\Catalog\Scripts\ e renomeie o arquivo para apenas deckfoundations.txt . não sei se você sabe PHP, mas lá você tem uma função de explosão onde você explode o nome do arquivo com um caractere

$ar = end(explode("/", $filename));
print_r($ar);

produziria algo assim

Array
(
   [0] => TSData\Res\Catalog\Scripts
   [1] => deckfoundations.txt
)

Então, com isso, eu poderia usar a primeira linha para criar a pasta, se não existente, e depois renomear o $ filename para a segunda linha de $ ar

    
por Jeggy 29.07.2012 / 15:40

2 respostas

1

Eu tenho um script que eu uso para encontrar, renomear e mover arquivos de uma só vez . Você pode modificá-lo para se adequar ao seu propósito, se quiser; No momento, ele está configurado para renomear arquivos aleatoriamente, mas você pode definir um padrão para renomeá-los.

A propósito, o script move todos os arquivos para o diretório de trabalho atual (aquele no qual ele é executado), mas que pode ser modificado novamente. Obviamente, você terá que alterar a localização ~/Downloads e substituir as extensões .jpg pelo que você precisa.

Não tenho certeza se isso é exatamente o que você quer, mas pode ser útil como modelo para você e qualquer outra pessoa. Salve-o em seu editor de texto favorito e torne-o executável.

OBSERVAÇÃO : se você modificar o script, mas manter o recurso de renomeação aleatória, esteja ciente de que ocasionalmente pode haver colisões (ou seja, os mesmos números são gerados eo novo arquivo é anulado), pois são um número limitado de novos nomes de arquivos que até duas instâncias de $ RANDOM podem gerar. É que aconteça quando os arquivos estão sendo rotulados com dois conjuntos de números aleatórios, mas pode ser melhor ter um sistema de numeração diferente se seus arquivos forem muito importantes ou críticos de alguma forma.

#!/bin/bash
# a script to recursively find all jpgs in a specified directory, rename with a random label and transfer to pwd

find ~/Downloads -type f -iname '*.jpg' -print0 | 
while IFS= read -r -d '' f; 
do mv -- "$f" "$RANDOM-$RANDOM.jpg"; 

done
    
por user76204 01.08.2012 / 20:52
2

Você pode tentar uma ferramenta de renomeação de arquivos, como as listadas no link fornecido por tachyons nos comentários.

Se isso falhar, você pode precisar escrever algo.

Como você disse na pergunta, você sabe PHP, por que não escrever uma solução você mesmo em PHP. O que você sugere parece uma abordagem razoável.

    
por Richard Holloway 29.07.2012 / 23:48