![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| 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 |
| Flyt alle filer i et mappetræ til et signal bibliotek? | briandanielz | UNIX for dummyer Spørgsmål & svar | 2 | 06-15-2008 06:20 PM |
| Overvejer filer i en mappe?? | skyineyes | Shell Programmering og Scripting | 3 | 07-16-2007 04:16 AM |
| MV-filer fra en mappestruktur (multiple-niveau) til andre mappestruktur | srmadab | UNIX for Advanced & Ekspertsøgning Brugere | 4 | 09-13-2006 05:01 PM |
| kopiere filer fra en mappe til en anden mappe | zip_zip | UNIX for dummyer Spørgsmål & svar | 5 | 09-14-2003 07:16 PM |
| flytter filer fra en UNIX-biblioteket til en Windows-mappe | gleads | UNIX for dummyer Spørgsmål & svar | 2 | 08-29-2002 09:42 PM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Jeg har 10000 filer i en mappe. Navnet er noget i retning af:
1.dat 2.dat 3.dat 4.dat ..... ..... ..... 1000.dat. ---- ----- Filer ikke er sorteret. Jeg ønsker at flytte første 500 largerst filer fra denne mappe til en anden mappe. Næste 500 største filer til en anden mappe. hvad der ville være den enkle Korn shell script til dette problem? tak Sidst redigeret af Bhanu72; 07-15-2008 på 08:31 PM.. |
|
||||
|
Her er en måde. Tag ud prints, når du har afsluttet testen. Den hale 2 er at springe over den samlede blokke vises ved ls-l. Dette vil ikke fungere, hvis nogen af de arkivnavne indeholde mellemrum. 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 skal du bruge din filliste sorteret efter filstørrelse
#! / bin / ksh SearchPath \u003d / whereever0 LowerSizeFilePath \u003d / whereever1 UpperSizeFilePath \u003d / whereever2 # cd $ SearchPath ls-e | egrep-v "/$|->" | cut-C31-41, 63 - | sortere-n-k 1n, 10 | cut-C12-> / tmp / Filelist ~ # ^ ^ ^ ^ ^ # | | | | + Få fil # | | | + - Sorter filliste efter filstørrelse # | | + - Få kun filstørrelse og filnavnet # | + - Stå af listen blød links og mapper poster # + - Listen udvides $ chronic wasting disease # # Du kan sende en liste til en temp fil med "> / tmp / Filelist ~" # # Du skal vide, hvor mange fil med FileCount \u003d `cat / tmp / Filelist ~ | wc-l` HeadSize \u003d `expr $ FileCount / 2« TailSize \u003d `expr $ FileCount - $ HeadSize« # MV «hovedet - $ HeadSize / tmp / Filelist ~` $ LowerSizeFilePath MV «hale - $ TailSize / tmp / Filelist ~` $ UpperSizeFilePath rm / tmp / Filelist ~ |
|
||||
|
Hej
tak for den løsning. Men af en eller anden grund er det ikke virker eller kan jeg ikke forstå. Kan De venligst give flere detaljer: Hvorfor bruger du egrep? Hvad er det virkelig det? ls det en tastefejl at du bruger ls-E i stedet for ls-l? tak for din hjælp. |
|
||||
|
Bhanu72: Jeg når til min server og tryed scriptet og det gjorde arbejdet. Men når de kørte ind i en anden server "ls-e" er ikke understøttet. Jeg ser i diffrence på SunOS og bemærker, at serveren ikke understøtter "-e" mulighed for "ls" er har lavere patche plan for SunOS 5.10. Så jeg kan kun forsikre, at dette script kan arbejde på Sun Solaris 5.10 Generic_125100-10. Jeg har ændret scriptet til at bruge "ls-l", men har brug for at ændre "cut"-indstillingen. 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 af en kode jeg køre hver del af røret kommando tilføjer en del på et tidspunkt, så se, at det gør. Med denne foreslåede ændring af script det skal køre. Jeg har kørt det på en Solaris 5.10 med lavere plaster plan. My best regards. Luis Ramirez |
|
||||
|
Hej,
Jeg havde forsøgt det med lille fil nummer. split \u003d 5. Det virkede fint. I din kode, du har oprettet mappen i script. Men i mit tilfælde den mappe allerede eksistere. Så jeg er nødt til at foretage simple ændringer. Tak for din hjælp. Jeg sætter pris på det. Bhanu72 |
![]() |
| Bogmærker |
| Tags |
| fil flytte, Solaris |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|