The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Flytt alle filer i en katalog treet til et signal katalogen? briandanielz UNIX for Dummies Spørsmål og svar 2 06-15-2008 06:20
Considering filene i en mappe? skyineyes Shell programmering og Skripting 3 07-16-2007 04:16
MV filer fra en katalogstrukturen (flere nivå) til andre katalogstrukturen srmadab UNIX for Advanced & ekspertbrukere 4 09-13-2006 05:01
kopiere filer fra en mappe til en annen katalog zip_zip UNIX for Dummies Spørsmål og svar 5 09-14-2003 07:16
flytte filer fra en UNIX-katalogen til en Windows-katalogen gleads UNIX for Dummies Spørsmål og svar 2 08-29-2002 09:42

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 denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 07-15-2008
Bhanu72 Bhanu72 is offline
Registrert bruker
  
 

Bli Dato: juli 2008
Innlegg: 4
Smile filer fra katalogen til en annen.

Jeg har 10.000 filer i en katalog. Den heter noe sånt som:

1.dat
2.dat
3.dat
4.dat
.....
.....
.....
1000.dat.
----
-----

Filene ikke er sortert. Jeg vil flytte første 500 largerst filer fra denne mappen til en annen katalog. Neste 500 største filer til en annen katalog.

Hva ville være den enkle korn shell script for dette problemet?

takk

Sist endret av Bhanu72; 07-15-2008 på 08:31..
  #2 (permalink)  
Old 07-15-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Bli Dato: mai 2008
Beliggenhet: Sydney, Australia
Innlegg: 1009
Her er én måte. Ta ut prints når du er ferdig med testingen. Den, det halen 2 er å hoppe over den totale blokker vises av ls-l. Dette vil ikke fungere hvis noen av filnavnene inneholde mellomrom.


Code:
i=0
split=1000
ls -l | tail +2 | sort -rn -k 5,5 | awk '{print $NF}' | while read f
do
        (( i%${split}==0 )) && print mkdir subdir$(( i/${split} ))
        print mv $f subdir$(( i/${split} ))
        (( i=i+1 ))
done

  #3 (permalink)  
Old 07-15-2008
lramirev lramirev is offline
Registrert bruker
  
 

Bli Dato: juli 2008
Innlegg: 8
Smile

Først må du ha din filliste sortert etter filstørrelse
#! / bin / ksh
SearchPath \u003d / whereever0
LowerSizeFilePath \u003d / whereever1
UpperSizeFilePath \u003d / whereever2
#
cd $ SearchPath
ls-e | egrep-v "/$|->" | cut-c31-41, 63 - | sort-n-k 1n, 10 | cut-C12-> / tmp / Filelist ~
# ^ ^ ^ ^ ^
# | | | | + Få fil
# | | | + - Sorter fillisten etter filstørrelse
# | | + - Få bare filstørrelse og filnavnet
# | + - Gå av listen myk koblinger og kataloger oppføringer
# + - Listen utvidet $ CWD
#
# Du kan sende til en midlertidig fil med "> / tmp / Filelist ~"
#
# Du må vite antall fil med
FileCount \u003d `cat / tmp / Filelist ~ | wc-l`
HeadSize \u003d `expr $ FileCount / 2`
TailSize \u003d `expr $ FileCount - $ HeadSize`
#
MV `hodet - $ HeadSize / tmp / Filelist ~` $ LowerSizeFilePath
MV `halen - $ TailSize / tmp / Filelist ~` $ UpperSizeFilePath
rm / tmp / Filelist ~
  #4 (permalink)  
Old 07-15-2008
Bhanu72 Bhanu72 is offline
Registrert bruker
  
 

Bli Dato: juli 2008
Innlegg: 4
Hei

takk for løsningen. Men av en eller annen grunn er det ikke fungerer, eller kan jeg ikke forstå.

Kan du vennligst gi flere detaljer:

Hvorfor bruker du egrep? Hva er det egentlig det?
Er det en skrivefeil som du bruker ls-e stedet for ls-l?

takk for hjelpen.
  #5 (permalink)  
Old 07-16-2008
lramirev lramirev is offline
Registrert bruker
  
 

Bli Dato: juli 2008
Innlegg: 8
Bhanu72:
Jeg da til min server og tryed skriptet og det gjorde arbeidet. Men da kjørte på en annen server "ls-e" støttes ikke. Jeg ser i diffrence på SunOS og merker at serveren ikke støtter "-e" muligheten for "ls" er har lavere patche for SunOS 5.10. Så jeg kan bare forsikre at dette skriptet kan fungere på Sun Solaris 5.10 Generic_125100-10.

Jeg endret skriptet å bruke "ls-l", men trenger å endre "klippe" innstilling.


Code:
ls -l | egrep -v "/$|->" | cut -c31-41,55- | sort -n -k 1n,10 | cut 
-c13- > /tmp/filelist~

Når jeg ikke forstår en del av en kode jeg kjøre hver del av pipe kommandoen legger en del om gangen, slik at den gjør. Med denne foreslåtte endringen til skriptet må kjøre. Jeg kjørte det på en solaris 5.10 med lavere patch nivå.

Min beste forhold.
Luis Ramirez
  #6 (permalink)  
Old 07-16-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Bli Dato: mai 2008
Beliggenhet: Sydney, Australia
Innlegg: 1009
Har du prøvd min løsning? Endring split \u003d 1000 til split \u003d 500 for øvrig, jeg glemte at du opprinnelig skulle flytte 500 filer, ikke 1000.
  #7 (permalink)  
Old 07-17-2008
Bhanu72 Bhanu72 is offline
Registrert bruker
  
 

Bli Dato: juli 2008
Innlegg: 4
Hei,

Jeg fikk prøve det med liten fil nummer. split \u003d 5. Det fungerte bra. I koden din, du har opprettet katalog i skriptet. Men i mitt tilfelle katalogen finnes allerede. Så jeg har å gjøre enkle endringer.

Takk for hjelpen. Jeg setter pris på det.

Bhanu72
Closed Thread

Hugseliste

Tags
fil flytte, solaris

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 03:31.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0