The UNIX and Linux Forums  

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
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

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 07-15-2008
Bhanu72 Bhanu72 is offline
Registered User
  
 

Join Date: Jul 2008
Inlägg: 4
Smile filer från katalogen till en annan.

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..
  #2 (permalänk)  
Old 07-15-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Join Date: maj 2008
Plats: Sydney, Australien
Inlägg: 1009
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

  #3 (permalänk)  
Old 07-15-2008
lramirev lramirev is offline
Registered User
  
 

Join Date: Jul 2008
Inlägg: 8
Smile

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 ~
  #4 (permalänk)  
Old 07-15-2008
Bhanu72 Bhanu72 is offline
Registered User
  
 

Join Date: Jul 2008
Inlägg: 4
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.
  #5 (permalänk)  
Old 07-16-2008
lramirev lramirev is offline
Registered User
  
 

Join Date: Jul 2008
Inlägg: 8
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
  #6 (permalänk)  
Old 07-16-2008
Annihilannic Annihilannic is offline Forum Advisor  
  
 

Join Date: maj 2008
Plats: Sydney, Australien
Inlägg: 1009
Visste du prova min lösning? Ändra split \u003d 1000 till split \u003d 500 av vägen, jag glömde att du ursprungligen ville flytta 500 filer, inte 1000.
  #7 (permalänk)  
Old 07-17-2008
Bhanu72 Bhanu72 is offline
Registered User
  
 

Join Date: Jul 2008
Inlägg: 4
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
Closed Thread

Komihåglista

Taggar
fil flytta, Solaris

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 07:01.


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