The UNIX and Linux Forums  
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Byta namn på flera filer jayell Shell-programmering och Skript 7 01-12-2009 04:27
Byta namn på flera filer Jazmania Shell-programmering och Skript 6 01-02-2009 02:16
Byta namn på flera filer dhiren_shah UNIX for Dummies Frågor & Svar 2 09-12-2008 02:23
Byta namn på flera filer rmayur UNIX for Dummies Frågor & Svar 6 02-26-2004 04:40
Byta namn på flera filer jxh461 Shell-programmering och Skript 4 04-01-2003 07:25

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ök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 01-02-2009
shekhar_v4 shekhar_v4 is offline
Registered User
  
 

Join Date: Jan 2009
Inlägg: 17
Byta namn på filer (flera filer)

Hej,

Jag har en katalog med filer namn som ABC20090101AXY.txt, ABC20090102BZ.txt, ABC20090101COF.txt etc. siffror i filnamnen företräda datum. Jag vill döpa om filerna till AXY.txt, BZ.txt och COF.txt

Jag försökte med denna kod.

myfile \u003d datum '+ ABC% Y% m% d'
för jag i *. txt
göra
mv $ i `echo $ i | sed 's / $ myfile / / ""
gjord

Men det ger budskap

mv: ABC20090101AXY.txt och ABC20090101AXY.txt är identiska

Kanna fullständig hjälpa mig att hitta problemet.

Hälsningar,
Shekhar
  #2 (permalänk)  
Old 01-02-2009
in2nix4life's Avatar
in2nix4life in2nix4life is offline
Registered User
  
 

Join Date: oktober 2007
Ort: East Coast
Inlägg: 58
Om du har Perl installerad, kan detta hjälpa dig:

för x *. txt; do mv $ x `echo $ x | perl -pe 's / ^ \ w + \ d +(.*)/$ 1 / "" gjort

Hoppas den här hjälper.
  #3 (permalänk)  
Old 01-02-2009
Christoph Spohr Christoph Spohr is offline
Registered User
  
 

Join Date: Sep 2008
Inlägg: 205
Hej,

skal variabler inuti''inte utvidgas. Så här

Kod:
mv $i `echo $i | sed 's/$myfile//'`
$ myfile kommer inte att ersättas av "date" + ABC% Y% m% d ' ".

Antingen använder "..." eller nej sed alls. Shell inbyggda ins är nog. Prova:
Kod:
mv $i ${i/200[7-9][0-1][0-9][0-3][0-9]/}
HTH Chris
  #4 (permalänk)  
Old 01-03-2009
reddysiva reddysiva is offline
Registered User
  
 

Join Date: Dec 2008
Inlägg: 11
Testa här
myfile \u003d $ (date '+ ABC% Y% m% d')
för jag i *. txt
göra
mv $ i `echo $ i | sed "s / $ myfile / /" "
gjord

Jag thik u didnt använda tillbaka tics eller $ () för att ställa in variabeln myfile.
till utgifter $ myfile använda "istället för"

Jag försökte detta
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 (permalänk)  
Old 01-05-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Registered User
  
 

Join Date: Sep 2006
Inlägg: 2.539
Citat:
Ursprungligen postat av shekhar_v4 View Post
Hej,

Jag har en katalog med filer namn som ABC20090101AXY.txt, ABC20090102BZ.txt, ABC20090101COF.txt etc. siffror i filnamnen företräda datum. Jag vill döpa om filerna till AXY.txt, BZ.txt och COF.txt

Jag försökte med denna kod.

myfile \u003d datum '+ ABC% Y% m% d'
för jag i *. txt
göra
mv $ i `echo $ i | sed 's / $ myfile / / ""
gjord

Men det ger budskap

mv: ABC20090101AXY.txt och ABC20090101AXY.txt är identiska

Kanna fullständig hjälpa mig att hitta problemet.

Hälsningar,
Shekhar
om du har Python och kan använda det här är en färdiga skript du kan använda. Användningstatistik exempel
Kod:
# 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 ]
Ta bort "-l" att göra faktiska byta namn.
  #6 (permalänk)  
Old 01-05-2009
freizl freizl is offline
Registered User
  
 

Join Date: Nov 2008
Inlägg: 3
Förutsatt att de "ABC20090102" strängen är fast längd.
Och jag använder sh skal.

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

Senast redigerad av freizl; 01-05-2009 vid 04:55..
  #7 (permalänk)  
Old 01-05-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Registered User
  
 

Join Date: Sep 2006
Inlägg: 2.539
Citat:
Ursprungligen postat av freizl View Post
Förutsatt att de "ABC20090102" strängen är fast längd.
Och jag använder sh skal.

Kod:
ls -1 *.txt | awk '{print "mv", $1, substr($1,12) }' | sh
Det är inte heller nödvändigt att använda ls och sh, genom att använda sig av FILENAME variabel
Kod:
awk '{ system("mv " FILENAME" " substr(FILENAME,1,12) )}' ABC*.txt
inte testat.
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 10:54.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0