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
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
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
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 ...
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.
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.
Tags rename mv microsoft-excel script