The UNIX and Linux Forums  
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.

Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Root Senha mudança bullz26 Sun Solaris 2 03-30-2008 11:09
Como alterar a senha ROOT. angelofhell HP-UX 3 02-25-2008 06:44
alterar senha root duke0001 Sun Solaris 3 02-22-2007 12:10
Como faço para alterar extensão kswaraj Programação Shell Script e 2 06-28-2004 08:07
Como alterar a extensão? prkwan Programação Shell Script e 4 11-16-2002 07:14

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 02-15-2008
Astrid Astrid is offline
Usuário
  
 

Join Date: Feb 2008
Posts: 4
mudar extensão de raiz e subdiretórios

Olá, meu primeiro post!
I'd appreciate ajudar com este script, sou novo para isso.

Tenho uma media diretório onde quero batch converter o arquivo de imagem a partir de nomes. Img para. Iso.

Tentei, mas obtém:
$ ./img2iso2.sh
./img2iso2.sh: linha 13: Erro de sintaxe: fim do arquivo inesperado

Este é o meu inacabada script:
Código:
#!/bin/bash

# Set the video directory here
VIDEO_ROOT_DIRECTORY="/Users/astrid/NFS/scripts/img2iso/";

# Check if the directory exist or not
if [ -d "$VIDEO_ROOT_DIRECTORY" ]; then
	cd $VIDEO_ROOT_DIRECTORY
else
	print "ERROR: Unable to reach directory - or it does not exist!";
fi

for imgfile do 
    	case $imgfile *.img
            	do mv $imgfile.img $imgfile.iso;
               	done
          print "img-files renamed to iso";
    	esac
done

exit 0
Parto do princípio de que não se verifique subdirectórios, embora eu gostaria que ele. Talvez uma combinação de encontrar, e grep sed deve ser utilizado em vez disso? Estes comandos parece maravilhas de trabalhar em quase qualquer situação.

Além disso, eu penso que seria inteligente para incluir algum tipo de verificação:
se houver um arquivo chamado image.iso e um chamado image.img na mesma (sub) diretório; Queria mudar o nome desta. img a imagem-1.iso. Mas eu nem sei por onde começar com esta verificação!

Se eu entender a mensagem de erro, há um problema com citando? Eu fiz tantas tentativas que eu não posso lembrar quando eu comecei mais.

Qualquer ajuda é muito apreciada.


EDIT:
Pesquisando no fórum eu encontrei uma maneira melhor de fazer a substituição do arquivo extensão (aqui), Mas eu não era tão sortudo com o subdirs.

Última edição por Astrid; em 02/15/2008 03:43..
  #2 (permalink)  
Old 02-15-2008
robotronic's Avatar
robotronic robotronic is offline Forum Advisor  
Posso brincar com a loucura?
  
 

Join Date: Apr 2002
Local: Itália
Lugares: 370
Isso deve funcionar para você:

Código:
#!/bin/bash

VIDEO_ROOT_DIRECTORY="/Users/astrid/NFS/scripts/img2iso"

for imgfile in `find "$VIDEO_ROOT_DIRECTORY" -name "*.img" -type f`
do
   n=0
   exit=""
   suffix=""

   while [ ! "$exit" ]
   do
      newname=`echo "$imgfile" | sed "s/\.img$/$suffix\.iso/"`
      if [ ! -f "$newname" ]
      then
         mv "$imgfile" "$newname"
         exit="y"
      else
         n="$((n+1))"
         suffix="-$n"
      fi
   done
done
  #3 (permalink)  
Old 02-15-2008
Astrid Astrid is offline
Usuário
  
 

Join Date: Feb 2008
Posts: 4
Obrigado pela rápida resposta, robotronic!

Mas lamento dizer que eu não poderia obtê-lo para o trabalho.

O script é executado e então eu começo rápido novamente, mas não há indicação se ele está errado em algum lugar, eu até tentei mudar o vídeo diretório raiz de um manequim de invocar alguns comentários, mas em vão.

Eu usei "toque" de fazer algumas manequim arquivos no diretório especificado e subdiretórios: alguns com o mesmo nome mas extensão diferente (. Img e. Iso, obviamente, e algumas outras só para ver se eles são afetados), e alguns arquivos com diferentes permissões (chmod 777 no máximo).

Mas não mudou a uma extensão.

O script em si está localizado em um nível acima do diretório "raiz mídia" (tal como previsto no script).


Código:
$ ls -l img2iso
total 0
-rwxrwxrwx    1 astrid  619956085    0 Feb 15 13:01 dummy.img
-rw-r--r--   1 astrid  619956085    0 Feb 15 21:50 dummy.iso
-rwxrwxrwx    1 astrid  619956085    0 Feb 15 13:01 example.img
-rw-r--r--    1 astrid  619956085    0 Feb 15 21:35 example_no_permission.img
-rwxrwxrwx    1 astrid  619956085    0 Feb 15 13:01 image.img
-rw-r--r--    1 astrid  619956085    0 Feb 15 13:01 isoimg.iso
drwxr-xr-x    2 astrid  619956085   68 Feb 15 12:53 level1a
drwxr-xr-x    9 astrid  619956085  306 Feb 15 13:00 level1b
  #4 (permalink)  
Old 02-15-2008
robotronic's Avatar
robotronic robotronic is offline Forum Advisor  
Posso brincar com a loucura?
  
 

Join Date: Apr 2002
Local: Itália
Lugares: 370
Muito estranho, tenho testado o script com alguns arquivos manequim e ele funciona no meu linux caixa.

Experimente inserir alguns comandos echo no script e tente voltar a executá-lo:

Código:
#!/bin/bash

# Set the video directory here
VIDEO_ROOT_DIRECTORY="/Users/astrid/NFS/scripts/img2iso"

for imgfile in `find "$VIDEO_ROOT_DIRECTORY" -name "*.img" -type f`
do
   echo "Processing IMGFILE <$imgfile>"
   n=0
   exit=""
   suffix=""

   while [ ! "$exit" ]
   do
      newname=`echo "$imgfile" | sed "s/\.img$/$suffix\.iso/"`
      if [ ! -f "$newname" ]
      then
         echo "NEW NAME OK! Renaming to <$newname>"
         mv "$imgfile" "$newname"
         exit="y"
      else
         echo "NEW NAME <$newname> already exists! Incrementing suffix"
         n="$((n+1))"
         suffix="-$n"
      fi
   done
Você também pode executar o script com "sh-x img2iso.sh" para rastrear a execução.
  #5 (permalink)  
Old 02-15-2008
Astrid Astrid is offline
Usuário
  
 

Join Date: Feb 2008
Posts: 4
$ ./img2iso.sh
#: Mau intérprete: Nenhum tal lima ou diretório

e

$ Sh-x img2iso.sh
$

O que é mais estranho:
$ Cat img2iso.sh
feito $ existe! Incrementando sufixo "

Tenho verificado que triplicar o diretório existe e está correto com a devida caso.

No segundo caso, não acontece nada, mas uma rápida mudança. Não ecos.

No img2iso diretório não prorrogação arquivos foram alterados depois de executar o script.

O concatenar Não posso sequer começar a compreender. Parece muito estranho para pedir a última eco desse jeito.

Vou ter de olhar mais atentamente novamente e desta vez eu tenho certeza que seu código é bom. Eu não posso ver que estou em falta do meu lado.

Estou em um MacOS X 10.4, talvez esta matéria? Eu uso Smultron como editor.

Última edição por Astrid; em 02/15/2008 07:29..
  #6 (permalink)  
Old 02-15-2008
fimblo fimblo is offline
Usuário
  
 

Join Date: Feb 2008
Localização: Stockholm Suécia
Lugares: 31
tal como esta:

Código:
for file in $(find . -type f -iname '*.img'); do
  mv $file ${file/img/iso}
done
Este doesnt tomar filenames nem whitespaces em directórios com os mesmos, para adaptar o referido a isso, faça:

Código:
save_ifs=$IFS ; IFS='
'
for file in $(find . -type f -iname '*.img'); do
  mv "$file" "${file/img/iso}"
done
IFS=$save_ifs
hope this helps
felicidades

EDIT: Isso funciona para a bash, mas se bem me lembro sobre o shell padrão é macosx bash ...
  #7 (permalink)  
Old 02-16-2008
vino's Avatar
vino vino is offline Forum Staff  
Apoiante (in vino veritas)
  
 

Join Date: Feb 2005
Local: Bangalore, Índia
Mensagens: 2.796
Citação:
Originally Posted by Astrid View Post
$ ./img2iso.sh
#: Mau intérprete: Nenhum tal lima ou diretório
Talvez um dos2unix ou algo semelhante no Mac.

Para o seu roteiro original
Código:
#!/bin/bash

# Set the video directory here
VIDEO_ROOT_DIRECTORY="/Users/astrid/NFS/scripts/img2iso/";

# Check if the directory exist or not
if [ -d "$VIDEO_ROOT_DIRECTORY" ]; then
  cd $VIDEO_ROOT_DIRECTORY
else
  print "ERROR: Unable to reach directory - or it does not exist!";
  exit 1
fi

for imgfile in $(find . -type f -iname "*.img")
do
  if [ ! -f ${imgfile%.img}.iso ] ; then
    mv ${imgfile} "${imgfile%.img}.iso"
    print "[${imgfile} -> ${imgfile%.img}.iso]"
  else
    mv ${imgfile} "${imgfile%.img}-1.iso"
    print "[${imgfile} -> ${imgfile%.img}-1.iso]"
done

exit 0
Não testado tho '.
Closed Thread

Marcadores

Tags
linux, linux comandos, comandos unix

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 01:05.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0