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
Omdøbe flere filer jayell Shell Programmering og Scripting 7 01-12-2009 04:27 PM
Omdøbe flere filer Jazmania Shell Programmering og Scripting 6 01-02-2009 02:16 PM
Omdøbe flere filer dhiren_shah UNIX for dummyer Spørgsmål & svar 2 09-12-2008 01:23 AM
Omdøbe flere filer rmayur UNIX for dummyer Spørgsmål & svar 6 02-26-2004 04:40 AM
Omdøbe flere filer jxh461 Shell Programmering og Scripting 4 04-01-2003 06:25 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 01-02-2009
shekhar_v4 shekhar_v4 is offline
Registreret Bruger
  
 

Join Date: Jan 2009
Stillinger: 17
Omdøbning af filer (Multiple files)

Hej,

Jeg har en mappe med filer navne som ABC20090101AXY.txt, ABC20090102BZ.txt, ABC20090101COF.txt osv. cifre i arkivnavne repræsentere dato. Jeg ønsker at omdøbe filerne til AXY.txt, BZ.txt og COF.txt

Jeg forsøgte med denne kode.

myfile \u003d date '+ ABC% Y% m% d'
for i in *. txt
gøre
MV $ I `echo $ i | sed 's / $ myfile / / »«
gjort

Men dens give besked

MV: ABC20090101AXY.txt og ABC20090101AXY.txt er identiske

Kan u hjælpe mig med at finde problemet.

Hilsen,
Shekhar
  #2 (permalink)  
Old 01-02-2009
in2nix4life's Avatar
in2nix4life in2nix4life is offline
Registreret Bruger
  
 

Join Date: oktober 2007
Beliggenhed: East Coast
Stillinger: 58
Hvis du har Perl installeret, kan dette hjælpe dig:

for x i *. txt; gøre MV $ x `echo $ x | perl -pe 's / ^ \ w + \ d +(.*)/$ 1 /' `; gjort

Hope this helps.
  #3 (permalink)  
Old 01-02-2009
Christoph Spohr Christoph Spohr is offline
Registreret Bruger
  
 

Join Date: Sep 2008
Posts: 205
Hej,

shell variable inde''ikke udvides. Så her

Code:
mv $i `echo $i | sed 's/$myfile//'`
$ myfile vil ikke blive erstattet af "dato" + ABC% Y% m% d ' ".

Enten bruge "..." eller nej sed overhovedet. Shell bygget-ins er nok. Prøv:
Code:
mv $i ${i/200[7-9][0-1][0-9][0-3][0-9]/}
HTH Chris
  #4 (permalink)  
Old 01-03-2009
reddysiva reddysiva is offline
Registreret Bruger
  
 

Join Date: Dec 2008
Stillinger: 11
Prøv dette
myfile \u003d $ (date '+ ABC% Y% m% d')
for i in *. txt
gøre
MV $ I `echo $ i | sed "s / $ myfile / /" `
gjort

Jeg thik u gjorde ikke brug tilbage stikker eller $ () for at indstille variablen myfile.
bruge $ myfile bruge "i stedet for '

Jeg forsøgte denne
a \u003d $ (date '+ ABC% Y% m% d')

echo ABC20090103AXY.txt | sed 's / $ a / / g'
ABC20090103AXY.txt

echo ABC20090103AXY.txt | sed "s / $ a / / g"
AXY.txt

echo '$ aABC20090103AXY.txt' | sed "s / $ a / / g"
$ aAXY.txt

echo '$ aABC20090103AXY.txt' | sed 's / $ a / / g'
ABC20090103AXY.txt
  #5 (permalink)  
Old 01-05-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Sep 2006
Indlæg: 2.527
Citat:
Oprindeligt Indsendt af shekhar_v4 View Post
Hej,

Jeg har en mappe med filer navne som ABC20090101AXY.txt, ABC20090102BZ.txt, ABC20090101COF.txt osv. cifre i arkivnavne repræsentere dato. Jeg ønsker at omdøbe filerne til AXY.txt, BZ.txt og COF.txt

Jeg forsøgte med denne kode.

myfile \u003d date '+ ABC% Y% m% d'
for i in *. txt
gøre
MV $ I `echo $ i | sed 's / $ myfile / / »«
gjort

Men dens give besked

MV: ABC20090101AXY.txt og ABC20090101AXY.txt er identiske

Kan u hjælpe mig med at finde problemet.

Hilsen,
Shekhar
hvis du har Python og kan bruge den, her er en klar script du kan bruge. Usage eksempler
Code:
# ls -1
ABC20090101AXY.txt
ABC20090101COF.txt
ABC20090102BZ.txt

# filerenamer.py -p "ABC\d+" -e "" -l "ABC*.txt"
==>>>>  [ /home/ABC20090101COF.txt ]==>[ /home/COF.txt ]
==>>>>  [ /home/ABC20090101AXY.txt ]==>[ /home/AXY.txt ]
==>>>>  [ /home/ABC20090102BZ.txt ]==>[ /home/BZ.txt ]
Fjern "-l" til at gøre reelle omdøbe.
  #6 (permalink)  
Old 01-05-2009
freizl freizl is offline
Registreret Bruger
  
 

Join Date: Nov 2008
Stillinger: 3
Hvis det antages, at "ABC20090102" strengen fast længde.
Og jeg bruger sh shell.

Code:
ls -1 *.txt | awk '{print "mv", $1, substr($1,12) }' | sh

Sidst redigeret af freizl; 01-05-2009 på 04:55 AM..
  #7 (permalink)  
Old 01-05-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Sep 2006
Indlæg: 2.527
Citat:
Oprindeligt Indsendt af freizl View Post
Hvis det antages, at "ABC20090102" strengen fast længde.
Og jeg bruger sh shell.

Code:
ls -1 *.txt | awk '{print "mv", $1, substr($1,12) }' | sh
Det er heller ikke nødvendigt at bruge ls og sh, ved at gøre brug af FILENAME variable
Code:
awk '{ system("mv " FILENAME" " substr(FILENAME,1,12) )}' ABC*.txt
ikke testet.
Closed Thread

Bogmærker

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 08:42 AM.


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