Belépés
Teljes fájlrendszer tartalmának kiírása, megadott formátum szerint
2010. március 20. – 12.49 – Piotr
Kötprogot kéne írnom bash "nyelven" és nem tudom a parancsot ami a teljes fájlrendszer tartalmát kilistázná normális formában (ls -R ezt találtam, de ez gagyi formátumban írja)
Úgy kéne mint ls -l nél, csak az uccsó oszlopban fájlnevek helyett a full elérési vonal kéne
Aki tud , segítsen
Előre is köszönöm, és nem tudom hogy jó fórumba írtam-e
- A hozzászóláshoz regisztráció és belépés szükséges

látom ismét sikerült a problémára utalni a címben
ls -Rl
?
Nézd meg a find -printf kapcsolóját, ezzel talán össze tudsz rakni olyan formátumot ami számodra is "normális".
ül, kussol, kulturáltan szórakozik
ls -Rl nem jó, már próbáltam
itt van maga a feladat:
Írjon szkriptet, mely paraméterül egy fájl elérési útvonalát kapja.
A fájl pontosan 1 sort tartalmaz,
melyben szóközökkel elválasztva szavak találhatóak.
A szkript megkeresi a fájlrendszerben azokat az állományokat, melyeknek neve
tartalmazza a fájlban található szavak valamelyikét.
A szkript kimenete ezen állományok közül azoknak az elérési útja, melyekre az
aktuális felhasználó rendelkezik írási joggal. Figyeljen arra, hogy a megtalált
állomány nem feltétlenül az aktuális felhasználó, vagy annak csoportjának
tulajdona!
és eddig jutottam: itt kéne hogy hogy tudom a full elérési útvonalat "greppelni"
cat $1 > feladat.txt
cat feladat.txt | tr -s " " "\n" > igy.txt
SOROK=0
SOROK=`wc -l igy.txt | cut -b 1`
for ((i=1;i<=$SOROK;i++))
do ls -l | grep `head -n$i igy.txt | tail -1`
done
ls helyett find-al jobban járnál, ill. a read parancs hasznos lehet a paraméterek fájlból beolvasásához.
Én így csinálnám. Viszont ha $1-ben csúnya szavak (pl `ρμ -rf /`) vannak, azokat végrehajtja.
for i in `cat $1`; do find ${2:-/} -name "*$i*" done | sort -u |\ while read f do if [ -w "$f" ] then ls -ld "$f" fi doneKöszönöm a tippeket, de a saját magam által kigondolt ösvényen szeretnék végigmenni (megírni a scriptet)
find parancs jó volt, most itt vagyok:
cat $1 | tr -s " " "\n" > igy.txt
SOROK=0
SOROK=`wc -l igy.txt | cut -b 1`
for ((i=1;i<=$SOROK;i++))
do find / -printf %M | grep `head -n$i igy.txt | tail -1`
done
ide a %M helyére nem tudom hogy hogy kéne megadni hogy elérési útvonal + jogok írodjanak (vki pls írja meg). Valamint ha futtatom a programot simán printf kapcsoló nélkül, akkor ahogy keres a fájlrendszerben folyton "elérés megtagadva" üzeneteket dobál, azokat hogy lehet elkerülni? Ha ezeket tudnám utána a mosta grep-re csővezetékkel rádobnék még1 grept arra még1et +1 cut és szerintem úgy jó is lenne.
cat $1 | tr -s " " "\n">igy.txt
SOROK=`wc -l igy.txt | cut -b 1`
for ((i=1;i<=$SOROK;i++))
do
find / -printf %p' '%M'\n' | grep `head -n$i igy.txt | tail -1`
done
most itt vagyok, ez már kiírja az elérési útvonalat meg a jogokat
maga a feladat:
" A szkript kimenete ezen állományok közül azoknak az elérési útja, melyekre az
aktuális felhasználó rendelkezik írási joggal. Figyeljen arra, hogy a megtalált
állomány nem feltétlenül az aktuális felhasználó, vagy annak csoportjának
tulajdona!"
három kérdésem van:
1: szóval ezt még meg kéne szűrni jogok szerint , csak nem tudom hogy hogy is kéne hogy a kiírásnak eleget tegyen.
2: hogy tudom szűrni hogy csak a fájlnevekben keressen?
3: kivágni az így kapott lista végéről a jogokat