![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| UNIX for dummyer Spørgsmål & svar Hvis du ikke ved, hvor man skal sende en UNIX-eller Linux-spørgsmål, efter det her. Alle UNIX og Linux newbies velkommen! |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| Behov finde en fil baseret længde | J_ang | UNIX for dummyer Spørgsmål & svar | 8 | 03-26-2007 09:21 AM |
| hvordan man kan flytte filer i forskellige mapper baseret på filnavn | italia5 | UNIX for dummyer Spørgsmål & svar | 7 | 08-23-2006 11:04 AM |
| Hvordan vil jeg gøre en finde kommandoen ikke vise vejen til en fil? | LordJezo | Shell Programmering og Scripting | 1 | 10-01-2004 07:01 AM |
| finde filename baseret på fil indhold | kollerj | UNIX for dummyer Spørgsmål & svar | 4 | 06-02-2001 02:31 PM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Find, fabrikat og flytte fil baseret på brugernavn
Hej!
Jeg er ny til UNIX (lige 3month anvendes), Jeg fandt min nye boksen indeholdt en masse filer og mapper i / home / boks / Jeg har prøvet at søge script i tis forum og fundet mange af dem, men jeg ved ikke, hvordan man kan kombinere dem til at gøre et script, men ved hjælp af rør. mine opgaver er: 1) at scanne bruger dir in / home / user / - I'm anvendes ls-ld / home / $ bruger / , $ Bruger skal være nøglen i. 2) Så, gruppering alle filer i scannet dir (i opgave 1), i en gruppe af extensions såsom ". Txt", ". Sh", ". Dat" Jeg brugte ls-l | awk 'BEGIN (FS \u003d"."} (print $ 2)'> index.txt 3) Baseret på index.txt, jeg skal gøre abonnentfortegnelser henvise til disse udvidelser f.eks. /home / user / txtExtension / home / user / datExtension / derefter flytte alle filer til deres forlængelse dir. Jeg er ked af, jeg kan ikke finde vejen til at skabe dette script. Jeg prøvede alle mit bedste for at kombinere alle ovenstående simpelt script, men No.3 er ret svært for mig. er der nogen UNIX-Shell ekspert har ideer, løsninger eller endog eksempel scripts til at guide mig Hilsen, Helmi. |
|
||||
|
Flytning af filer ved Indeks
Jeg testet nedenfor scriptet ved at skabe brugermapper under / tmp med forskellige typer af filtypenavne Code:
#!/bin/ksh
/bin/rm index.dat
set -A USER_HOME /tmp/UserA /tmp/UserB /tmp/UserC /tmp/Root /tmp/GroupA /tmp/GroupB
set -A USERS UserA UserB UserC Root GroupA GroupB
for v in ${USERS[*]} ; do
find /tmp/$v -type f | awk -F. ' (NF == 2 ){ print $2 }' | sort -ud | tee -a index.dat
done
for type in $(<index.dat); do
NewDir=/tmp/${type}-IndexedFileDir
mkdir -p $NewDir
find ${USER_HOME[*]} -type f -name "*.$type" -print | xargs -I{} -t mv {} ${NewDir}
done
Kontroller ovenstående script ved at køre det på nogle falske abonnentfortegnelser og lad os vide, hvis denne doesnot hjælpe. Tak Nagarajan Ganesan |
|
||||
|
Åh, mand ... så cool ennstate
Thanks a lot PAL! det hele fungerer godt! men der er noget, jeg savnede i første, hvis visse fil fjernes uden "mærke / beder om tilladelse til at flytte" brugeren eller rod, er det virkelig generende for andre brugere at spore tilbage og måske de forventede filerne var blevet slettet. for anden gang, er der nogen, kan coupe dette problemer, måske ved at foretage en vis tracker log eller sådan noget? Hilsen, Helmi. |
|
||||
|
Code:
#!/bin/sh
awk -v user="user1" ' BEGIN { path = " /home/" user "/";command = "ls" path ;
while ( (command | getline line)>0 ) {
if (line ~ /\....$/) {
ext = substr(line,length(line)-2)
Extension[ext]
files[line] = ext
}
}
}
END { makedircmd = "mkdir "
for ( e in Extension) {
print "making " path e
dir = path e
makedircmd = makedircmd dir
print makedircmd
}
#system(makedircmd) #uncomment to use
for (f in files) {
mvcmd = "mv" path f " " path files[f]
traceback = "mv" path files[f] "/" f path
print traceback
print traceback >> "backup.sh" #backup
#system(mvcmd) #uncomment to use
}
}
' "file"
et forsøg på i awk. du kan bruge backup.sh at flytte tilbage disse filer til oprindelige mappe. |
|
||||
|
Jeg har redigeret script på Code:
user="TEST" ' BEGIN { path = " /home/rosman/" user "/";command = "ls" path
Når testen er en test dir som indeholdt den 1. foretaget af ennstate FYI, jeg ikke logge ind som root, derfor kan jeg ikke adduser. Så jeg lige lavet en dummy dir til testning. Fejlen tilstand var Code:
[rosman]: /home/rosman/TEST => backup.sh awk: 0602-533 Cannot find or open file file. The source line number is 1. Og jeg går ud fra, at det var i den første linje i awk. Enhver antydning af, hvordan man kan løse dette? Hilsen, Helmi |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|