![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| 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 |
| Flytta alla filer i en katalog träd till en signal katalogen? | briandanielz | UNIX for Dummies Frågor & Svar | 2 | 06-15-2008 06:20 |
| Med tanke på filer i en katalog? | skyineyes | Shell-programmering och Skript | 3 | 07-16-2007 04:16 |
| MV-filer från en katalogstruktur (flera nivå) till andra katalogstruktur | srmadab | UNIX för avancerade & Expertanvändare | 4 | 09-13-2006 05:01 |
| kopiera filer från en katalog till en annan katalog | zip_zip | UNIX for Dummies Frågor & Svar | 5 | 09-14-2003 07:16 |
| flytta filer från en UNIX-katalogen till en Windows-katalogen | gleads | UNIX for Dummies Frågor & Svar | 2 | 08-29-2002 09:42 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Jag har 10000 filer i en katalog. Den heter något i stil med:
1.dat 2.dat 3.dat 4.dat ..... ..... ..... 1000.dat. ---- ----- Filer som inte sorteras. Jag vill flytta första 500 largerst filerna från denna katalog till en annan katalog. Nästa 500 största filer till en annan katalog. vad som skulle vara enkel Korn shell script för detta problem? tack Senast redigerad av Bhanu72; 07-15-2008 vid 08:31.. |
|
||||
|
Här är ett sätt. Ta ut Skriv utär när du är klar med testningen. Den svans 2 är att hoppa över den totala block visas av ls-l. Detta kommer inte att fungera om någon av de filnamn som innehåller mellanslag. Kod:
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
|
|
||||
|
Det första du skulle behöva din fillistan sorterade efter filstorlek
#! / 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 ~ # ^ ^ ^ ^ ^ # | | | | + Hämta filen # | | | + - Sortera fillistan genom filstorlek # | | + - Ta bara filstorleken och filnamn # | + - Bort listan mjuka länkar och kataloger poster # + - Lista förlängas $ CWD # # Du kan skicka listan till en temp-fil med "> / tmp / Filelist ~" # # Du behöver veta hur många fil med FileCount \u003d `cat / tmp / Filelist ~ | wc-l` HeadSize \u003d `expr $ FileCount / 2" TailSize \u003d `expr $ FileCount - $ HeadSize" # mv `huvudet - $ HeadSize / tmp / Filelist ~" $ LowerSizeFilePath mv "svans - $ TailSize / tmp / Filelist ~" $ UpperSizeFilePath rm / tmp / Filelist ~ |
|
||||
|
Hej
tack för lösningen. Men av någon anledning är det inte fungerar eller kan jag inte förstå. Kan du ge fler detaljer: Varför använder du egrep? Vad är det egentligen med? Är det ett stavfel som du använder ls-e istället för ls-l? tack för din hjälp. |
|
||||
|
Bhanu72: Jag då till min server och tryed manus och det har fungerat. Men då sprang på en annan server "ls-e" stöds inte. Jag ser i diffrence på SunOS och meddelande att servern inte stöder "-e" alternativet på "Är" är har lägre patche för SunOS 5.10. Jag kan bara försäkra att det här scriptet kan arbeta på Sun Solaris 5.10 Generic_125100-10. Jag ändrade skriptet att använda "ls-l", men behöver ändra "cut" inställning. Kod:
ls -l | egrep -v "/$|->" | cut -c31-41,55- | sort -n -k 1n,10 | cut -c13- > /tmp/filelist~ När jag inte förstår en del av en kod som jag kör varje del av röret kommando att lägga till en del i taget så ser att den gör. Med detta förslag till att ändra skriptet måste köras. Jag sprang på en Solaris 5.10 med lägre patch nivå. Mina bästa hälsningar. Luis Ramirez |
|
||||
|
Hej,
Jag försökte det med små ärendenumret. split \u003d 5. Det fungerade bra. I din kod har du skapat en katalog i skriptet. Men i mitt fall katalogen redan finns. Så jag måste göra enkla ändringar. Tack för din hjälp. Jag uppskattar det. Bhanu72 |
![]() |
| Komihåglista |
| Taggar |
| fil flytta, Solaris |
| Thread Tools | Sök i denna tråd |
| Visningslägen | Betygsätt denna tråd |
|
|