The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
Root Password ændre bullz26 Sun Solaris 2 03-30-2008 11:09 AM
Sådan ændres ROOT password. angelofhell HP-UX 3 02-25-2008 06:44 AM
ændre root password duke0001 Sun Solaris 3 02-22-2007 12:10 PM
Hvordan ændrer jeg udvidelse kswaraj Shell Programmering og Scripting 2 06-28-2004 08:07 PM
Sådan ændres udvidelse? prkwan Shell Programmering og Scripting 4 11-16-2002 07:14 PM

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 Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 02-15-2008
Astrid Astrid is offline
Registreret Bruger
  
 

Join Date: Feb 2008
Stillinger: 4
ændre filtypenavnet fra roden og undermapper

Hej, mit første indlæg!
Jeg vil sætte pris på hjælp med dette script, jeg er ny her.

Jeg har et medie-bibliotek, hvor jeg ønsker at batch konvertere billedfil navne fra. Img til. Iso.

Jeg har prøvet men får:
$ ./img2iso2.sh
./img2iso2.sh: Linje 13: syntaks fejl: uventet slutningen af filen

Dette er min ufærdige script:
Code:
#!/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
Jeg går ud fra dette ikke kontrollere undermapper, selvom jeg gerne vil have den til. Måske en kombination af finde, grep og sed bør anvendes i stedet? Disse kommandoer synes at arbejde vidundere i næsten enhver situation.

Også, ville jeg synes, det ville være smart at inkludere en form for check:
hvis der er en fil kaldet image.iso og en kaldet image.img i samme (under) bibliotek, jeg gerne vil ændre navnet på det. img fil til billedet-1.iso. Men jeg ved ikke engang, hvor man skal starte med denne check!

Hvis jeg har forstået den fejlmeddelelse, der er et problem med at citere? Jeg har gjort så mange forsøg, at jeg ikke kan huske, hvor jeg begyndte længere.

Enhver hjælp er meget værdsat.


EDIT:
Søgning efter forum Jeg har fundet en bedre måde at gøre udskiftning af filtypenavnet (her), Men jeg var ikke så heldige med undermapper.

Senest redigeret af Astrid; 02-15-2008 på 03:43 PM..
  #2 (permalink)  
Old 02-15-2008
robotronic's Avatar
robotronic robotronic is offline Forum Advisor  
Kan jeg spille med vanviddet?
  
 

Join Date: Apr 2002
Hjemmehavn: Italien
Stillinger: 370
Dette bør arbejde for dig:

Code:
#!/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
Registreret Bruger
  
 

Join Date: Feb 2008
Stillinger: 4
Tak for det hurtige svar, robotronic!

Men jeg er ked af at sige, at jeg ikke kunne få det til at virke.

Scriptet kører og så jeg får hurtigt igen, men der er ingen tegn på, hvis det går galt et sted, jeg selv forsøgt at ændre videoen roden til en dummy biblioteket til at påberåbe nogle tilbagemeldinger, men til ingen nytte.

Jeg har brugt "touch" til at foretage nogle dummy-filer i den angivne mappe og undermapper: nogle med samme navn, men forskellige udvidelse (. Img og. Iso, naturligvis, og nogle andre bare for at se, om de er berørt), og nogle filer med forskellige tilladelser (chmod 777 på de fleste).

Men ikke en ændret udvidelse.

Scriptet selv ligger i en mappe niveau over "medier roden" (som defineret i scriptet).


Code:
$ 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  
Kan jeg spille med vanviddet?
  
 

Join Date: Apr 2002
Hjemmehavn: Italien
Stillinger: 370
Meget underligt, jeg har testet scriptet med nogle prøvedukkens filer og det virker på min linux-boks.

Prøv at indsætte nogle echo kommandoer i scriptet og prøv igen at køre det:

Code:
#!/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
Du kan også køre scriptet med "sh-x img2iso.sh" at spore udførelse.
  #5 (permalink)  
Old 02-15-2008
Astrid Astrid is offline
Registreret Bruger
  
 

Join Date: Feb 2008
Stillinger: 4
$ ./img2iso.sh
#: Dårlig tolk: Ingen sådan fil eller mappe

og

$ Sh-x img2iso.sh
$

Hvad er mere mærkeligt:
$ Cat img2iso.sh
Udfærdiget $ eksisterer! Øger suffikset "

Jeg har tredobbelt kontrolleret, at biblioteket findes og er stavet korrekt med korrekt sag.

I det andet tilfælde sker der ingenting, men en hurtig forandring. Nr. ekkoer.

I img2iso mappe ingen filer er blevet ændret forlængelse efter scriptet køres.

Den concatenate Jeg kan ikke engang begynde at forstå. Det virker meget mærkeligt til at bede de sidste echo sådan.

Jeg bliver nødt til at se denne over grundigt igen og igen, så jeg er sikker på, at din kode er god. Jeg kan bare ikke se, hvad jeg mangler på min side.

Jeg er på en MacOS X 10.4, måske dette spørgsmål? Jeg bruger Smultron som redaktør.

Senest redigeret af Astrid; 02-15-2008 på 07:29 PM..
  #6 (permalink)  
Old 02-15-2008
fimblo fimblo is offline
Registreret Bruger
  
 

Join Date: Feb 2008
Location: Stockholm Sverige
Stillinger: 31
hvordan Bout dette:

Code:
for file in $(find . -type f -iname '*.img'); do
  mv $file ${file/img/iso}
done
Dette gør ikke tage filnavne eller mapper med blanke i dem, for at tilpasse de ovenfor til at gøre:

Code:
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
skål

EDIT: Dette virker for bash, men hvis jeg husker rigtigt standard shell på macosx er bash ...
  #7 (permalink)  
Old 02-16-2008
vino's Avatar
vino vino is offline Forum Staff  
Supporter (in vino veritas)
  
 

Join Date: Feb 2005
Beliggenhed: Bangalore, Indien
Indlæg: 2.796
Citat:
Oprindeligt Indsendt af Astrid View Post
$ ./img2iso.sh
#: Dårlig tolk: Ingen sådan fil eller mappe
Måske en dos2unix eller noget tilsvarende i Mac.

På din oprindelige script
Code:
#!/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
Ikke testet tho '.
Closed Thread

Bogmærker

Tags
linux, linux kommandoer, UNIX kommandoer

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 11:25 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0