Renomeie a pasta usando script, variáveis ​​do documento Excel

Renomeie a pasta usando script, variáveis ​​do documento Excel

Sistema de arquivos Linux

Eu tenho um diretório com 1500 pastas. Estou procurando usar um documento Excel que tenha 1.500 nomes de pastas em uma coluna e um ID exclusivo na próxima. Estou procurando criar um script para que o script renomeie as pastas para o novo ID exclusivo. Alguém pode me ajudar parece muito fácil, embora eu não saiba escrever scripts. Alguém pode fornecer um link para um script on-line (não consegui encontrar um).

Look at volume A for folder Var#1 (from excel)

if present on Volume A then mv Var#1 to Var#2 (from excel)

loop and grab next line of excel doc

Responder1

Ok, aqui está:

para eu em $(cat test.csv)

fazer

dir1=$(echo $i|sed 's/,.*//')

dir2=$(echo $i|sed 's/.*,//')

se [ -d $dir1]

então

se [-d $dir2]

então

echo $dir2 presente, pulando a mudança de $dir1 para $dir2

outro

mv $dir1 $dir2

fi

fi

feito

Responder2

Então, sou usuário de Linux, Unix e Mac e escrevo scripts Perl e Bash. Se você possui um power shell ou cygwin, pode fazer o seguinte, o Windows também pode ter isso, mas não prenda a respiração:

Sem fazer tudo, acho que você deveria ser capaz de pegar isso e modificar da maneira que quiser...

  • Salve seus dados em um arquivo csv (somefile.csv)
  • Em uma concha bash

bash> para temp_line emcat somefile.csv

fazer

echo mv $temp_line |sed 's/,/ /'

pronto > algum arquivo.sh

Não execute a linha a seguir até ter certeza de que fará o que você deseja!

bash>. ./algum arquivo.sh

Deveria ser isso ... Observe, este é um hack rápido, pode ser escrito com mais verificação de erros e outras coisas, e isso estava na minha cabeça :) Outro problema que você pode encontrar são os espaços no arquivo/ nomes de diretórios, basta adicionar aspas. Se precisar verificar se o diretório está presente, você pode adicionar uma instrução if como a seguinte:

bash>if [ -d 'nome_diretório']; então... ;fi

Isso deve ser pepitas suficientes sem escrevê-lo. Posso me inspirar mais tarde e escrever isso em uma postagem de acompanhamento.

Responder3

Isso énão é uma resposta, mas estou inserindo-o como um porque os comentários não permitem uma formatação decente ou tanto texto.

Obviamente, os nomes das pastas existentes são únicos (assumindo que estejam todos na mesma superpasta ou sejam apresentados como nomes de caminho completos - conforme apontado por @nerdwaller). E os IDs exclusivos na segunda coluna são, por definição, exclusivos. As duas colunas são únicas (não sobrepostas)? Considere os seguintes dados:

          Nome antigo Novo ID exclusivo
Para_ser,_ou_não_ser, 1
essa é a questão. 2
The_quick_brown_fox 3
salta_sobre_o_cachorro_preguiçoso. 4
             ⋮ ⋮
Once_upon_a_midnight_dreary, 40
enquanto_eu_ponderei, 41
fraco_e_cansado, 42
             ⋮ ⋮
A_resposta_para_os 56
questão_final_da_vida, 57
o_universo,_e_tudo_é 58
42 59
E assim por diante... 60

Se/quando você tentar renomear weak_and_weary,para 42, você colidirá com a 42pasta existente. Provavelmente, a melhor maneira de resolver isso é verificar os nomes das pastas antigas em busca de nomes que correspondam ao padrão dos IDs exclusivos e tratá-los manualmente.

informação relacionada