Renomeia pasta usando script, variáveis do excel doc

1

Sistema de arquivos Linux

Eu tenho um diretório com 1500 pastas. Eu estou olhando para usar um documento do excel que tem os nomes de 1500 pastas em uma coluna e um id único no próximo. Eu estou olhando para script assim o script reanima 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 (eu 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
    
por Mike Kohn 01.11.2012 / 21:13

3 respostas

2

Ok, aqui está:

for i in $(cat test.csv)

do

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

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

if [ -d $dir1]

then

if [ -d $dir2 ]

then

echo $dir2 present, skipping move from $dir1 to $dir2

else

mv $dir1 $dir2

fi

fi

done

    
por 01.11.2012 / 22:34
0

Então, eu sou um usuário linux, unix e mac e escrevo scripts perl e bash. Se você tem um power shell ou um cygwin, você pode fazer o seguinte, o Windows pode ter isso também, mas não prenda a respiração:

Sem fazer a coisa toda, acho que você deve ser capaz de fazer isso e mod da maneira que quiser ...

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

bash> for temp_line in cat somefile.csv

do

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

     

feito > somefile.sh

Não corra na linha seguinte até ter certeza de que fará o que você quer fazer!

bash>. ./somefile.sh

Deve ser isso ... Note, isso é um hack rápido, isso pode ser escrito com mais checagem de erros e o que não está, e isso estava fora de foco :) Outro problema que você pode encontrar são espaços em os nomes do arquivo / dir, apenas adicione aspas. Se você precisa verificar se o diretório está presente, você pode adicionar uma declaração if como a seguinte:

bash>if [ -d 'dir_name' ]; then ... ;fi

Isso deve ser o suficiente nuggets sem escrevê-lo. Eu poderia me inspirar mais tarde e escrever isso em um post de acompanhamento.

    
por 01.11.2012 / 22:26
0

Esta não é uma resposta , mas eu a entro como uma, porque os comentários não permitem formatação decente ou muito do texto.

Obviamente, os nomes das pastas existentes são únicos (assumindo que eles estão todos na mesma super-pasta, ou são apresentados como nomes de caminhos completos - como apontado por @nerdwaller). E os IDs únicos na segunda coluna são, por definição, exclusivos. As duas colunas são exclusivas (não se sobrepõem)? Considere os seguintes dados:

          Old name            New unique ID
To_be,_or_not_to_be,                1
that_is_the_question.               2
The_quick_brown_fox                 3
jumps_over_the_lazy_dog.            4
             ⋮                     ⋮
Once_upon_a_midnight_dreary,       40
while_I_pondered,                  41
weak_and_weary,                    42
             ⋮                     ⋮
The_answer_to_the                  56
ultimate_question_of_life,         57
the_universe,_and_everything_is    58
42                                 59
And_so_on...                       60

Se / quando você tentar renomear weak_and_weary, para 42 , você colidirá com a pasta 42 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.

    
por 02.11.2012 / 00:27