tramer [ ]
banalny skrypt pod linuxa - pomocy!!!
muszę na jutro (najpóźniej na środę) napisać pewien skrypt linuxowy. skrypt jest naprawdę banalny, ale niestety nie mam linuxa żeby sprawdzić czy działa (a i czasu nie za bardzo, bo dodatkowo parę innych projektów i kolosów). dla kogoś kto zna linucha taki skrypt jest na 0.5 minuty... tak więc pleez pleeeez help me :-) oto treść:
skrypt ma: wyszukiwać w katalogu (i podkatalogach) "X" pliki, których właścicielem jest użytkownik "Y". składnia polecenia:
nazwa_skryptu [opcje] "X" "Y"
opcje:
-l : informacje o nazwach, prawach dostepu oraz wielkosciach plikow
-p : informacje o prawach plikow
-s : informacje o wielkosci plikow
bez opcji: informacja tylko o nazwach
jak widać banał.... ls, grep etc i to wszystko pleeeeeeeeeeeeeeeeeeeeez help!!!!!!!!!!!
dudek101 [ Konsul ]
jesli argumentami wejsciowymi beda $1 katalog $2 uzytkownik, $3 parametry, to mozesz zastosowac cos takiego case $3 in -l) ls -lR $1 | grep $2 -p) wieksza gimnastyka, wyswietlenie samych nazw i praw dostepu mozna zrobic sed'em albo awk, chociaz jesli chodzi tu o typy plikow (wykonywalny, link, katalog, kolejka, itp.) to uzyc nalezy opcji -p w ls'ie, czyli: -p) ls -sR $1 |grep $2 -s ls -sR $1 | grep $2 *) ls -R $1 |grep $2 esac pokombinuj :)))
tramer [ ]
dzięki... w tym problem że nie mam gdzie pokombinować bo nie mam linucha... :-/ a co do -p to wystarcza informacje -xxx-x-x-x etc ;-)
dudek101 [ Konsul ]
wlasnie w tym -p lezy pies pogrzebany, o ile sie nie myle to informacje o prawach dostepu do plikow (rwx) dostaniesz tylko dzieki parametrowi -l ale wtedy dostaniesz tez rozmiary, daty i informacje o wlascicielu
tramer [ ]
a nie mogę wyciąć reszty informacji podając pierwszą kolumnę i spację jako separator? (mówię z pamięci, nie mam jak sprawdzić :-(
dudek101 [ Konsul ]
mozesz, ale chyba grep sobie z tym nie poradzi, poczekaj zajrze do mana :)
dudek101 [ Konsul ]
sam grep nie wystarczy, trzeba posilic sie awk ls -lR $1| grep $2 | awk '$1, $9' nie wiem jak zrobic to samym awk z poziomu skryptu, ale powinno dzialc
dudek101 [ Konsul ]
sam grep nie wystarczy, trzeba posilic sie awk ls -lR $1| grep $2 | awk '$1, $9' nie wiem jak zrobic to samym awk z poziomu skryptu, ale powinno dzialc
dudek101 [ Konsul ]
sorry, cos mi sie powalilo, jeszcze raz :) ls -lR $1 | grep $2 | awk ' print $1,$9 '
dudek101 [ Konsul ]
FUCK, cos jest pokrzaczone z formularzami jesli bedziesz wpisywac to co podeslalem to zmnien znaczki <> otaczajace print $1,$9 na krecone nawiasy
tramer [ ]
no dobra... ktoś napisał mi coś takiego... :-D help cz.2 potrzebuję objaśnienia ;-)))))))) #v+ [looser.sh] #!/bin/bash ZM=9 while [ $# -gt 2 ]; do case $1 in -l | 1,5,9 ) ZM="1,5,9" ;; -p | 5 ) ZM="5" ;; -s | 1 ) ZM="1" ;; esac shift done D=`echo $1 | sed "s%\(.\)\./%\1%g;s%//*%/%g"` for i in `ls -d $D/*`; do if [ -d $i ]; then DIRS="$DIRS $i"; else FILS="$FILS $i"; fi done eval DIRS="( $DIRS )"; eval FILS="( $FILS )" ls -dl "$FILS[@]" | sed "/$2/!d;"$'s/ */\t/g;s%//*%/%g;/\.$/d' | cut -f $ZM for i in "$DIRS[@]"; do eval $0 $ZM $i $2 done #v-
Bodziu [ Lord Ironfist ]
A dlaczego nie korzystacie z find ??? Przecież ta funkcja jest o wiele bardziej rozbudowana :-))
dudek101 [ Konsul ]
wlasciwie to ja tez potrzebowalbym pomocy z czyms takim - nie dziala :))) przynajmniej u mnie bodziu -> fucktycznie find tez by sie nadal