![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| UNIX for Dummies Frågor & Svar Om du inte är säker på var att skriva en UNIX eller Linux fråga efter det här. Alla UNIX-och Linux-nybörjare välkomna! |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| Behöver du hitta en fil baserat längd | J_ang | UNIX for Dummies Frågor & Svar | 8 | 03-26-2007 09:21 |
| hur man kan flytta filer till olika mappar baserat på filnamn | italia5 | UNIX for Dummies Frågor & Svar | 7 | 08-23-2006 11:04 |
| Hur skulle jag göra en hitta kommandot inte visas sökvägen till en fil? | LordJezo | Shell-programmering och Skript | 1 | 10-01-2004 07:01 |
| hitta filnamnet baserat på filinnehåll | kollerj | UNIX for Dummies Frågor & Svar | 4 | 06-02-2001 02:31 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Hitta göra och flytta filen baserat på användarnamn
Hallå där,
Jag är nybörjare i Unix (precis 3month använts) Jag har hittat min nya box innehåller en massa filer och kataloger i / home / låda / Jag har försökt söka manus i ôçò forumet och hittade många av dem, men jag vet inte hur man kan kombinera dem för att göra ett manus, men med hjälp av rör. mina arbetsuppgifter är: 1) för att skanna användaren dir i / home / user / - I'm används ls-ld / home / $ user / , $ Användaren måste nyckeln i. 2) Då samlar alla filer i skannad dir (i uppgift 1), i grupp tillägg såsom ". Txt", ". Sh", ". Dat" Jag använde ls-l | awk 'BEGIN (FS \u003d"."} (print $ 2)'> index.txt 3) Baserat på index.txt, jag ska göra kataloger hänvisar till dessa förlängningar exempel. /home / user / txtExtension / home / user / datExtension / sedan flytta alla filer till en förlängning dir. Jag är ledsen, jag kan inte hitta sätt att skapa det här skriptet. Jag försökte mitt bästa att kombinera alla ovan enkelt skript men No.3 är ganska svårt för mig. finns det någon UNIX-Shell expert har idéer, lösningar eller ens exempelskript att guida mig Hälsningar, Helmi. |
|
||||
|
Flytta filer genom Index
Jag har testat under manus genom att skapa användare kataloger under / tmp med olika typer av filtillägg Kod:
#!/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
Kontrollera ovanstående script genom att köra det på en del falska kataloger och låt oss veta om detta doesnot hjälp. Tack Nagarajan Ganesan |
|
||||
|
Oh, man ... så coolt ennstate
Tack kompis! allt fungerar bra! men det är något som jag missade i början, om vissa filen tas bort utan "märker / begär tillstånd för att flytta" användaren eller root, är det verkligen besvärande för andra användare att spåra tillbaka och kanske de förväntade filerna har tagits bort. för andra gången, är det någon kan Coupe detta problem, kanske genom att göra en viss tracker logg eller nåt? Hälsningar, Helmi. |
|
||||
|
Kod:
#!/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"
ett försök i awk. du kan använda backup.sh att flytta tillbaka filerna till den ursprungliga katalogen. |
|
||||
|
Jag har redigerat manus på Kod:
user="TEST" ' BEGIN { path = " /home/rosman/" user "/";command = "ls" path
Om testet är ett test dir som innehöll 1:a som ennstate För kännedom kan jag inte logga in som root, därför kan jag inte adduser. Så jag bara gjort en dummy dir för testning. Felet staten Kod:
[rosman]: /home/rosman/TEST => backup.sh awk: 0602-533 Cannot find or open file file. The source line number is 1. Och jag antar att det var i den första raden i awk. Alla förslag hur man rättar till detta? Hälsningar, Helmi |