![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
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.. |
|
||||
|
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
|
|
||||
|
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 ~ |
|
||||
|
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. |
|
||||
|
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 |
|
||||
|
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 |
![]() |
| Hugseliste |
| Tags |
| fil flytte, solaris |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|