PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : datei aus $HOME-Verzeichnis oder Unterverzeichnis mit AWK ?????? heraus finden ?????



Chito
16-04-2008, 16:33
Hallo!

Ich habe da ein kleinere anliegen.

Wie genau kann ich heraus finden ob eine Datei aus der $HOME-Verzeichnis oder einem Unterverzeichnis des $HOME-Verzeichnisses ist?

Wie genau kann man eine Datei auf diese Kriterien prüfen und dann ausgeben? wie $HOME für Home-Verzeichnis und Unter für Unter-Verzeichnis?



Vielen Dank für eure Hilfe ... komme hier echt nicht weiter ;)

Gruss :)

ContainerDriver
16-04-2008, 21:44
Hallo.

Verstehe ich das richtig: du hast eine Datei, und willst überprüfen, ob die auch in $HOME liegt? Das würde ich mit find machen. Allerdings ist dann nicht gesagt, dass es sich um die selbe Datei handelt, es kann auch nur der Name gleich sein.
Oder wenn du den kompletten Pfad der Datei hast, dann könntest du auch überprüfen, ob der Pfad der Datei mit $HOME beginnt.

Gruß, FLorian

Chito
17-04-2008, 18:24
Hallo Florian.

Danke für deine Hilfe.

Also, für jede datei soll geprüft werden ob Sie aus dem Home-Verzeichnis, oder Unterverzeichnis kommt.

Wie kann ich denn prüfen ob der Anfang mit $HOME beginnt?

Vielen Dank ;)

jan61
17-04-2008, 18:48
Moin,


Also, für jede datei soll geprüft werden ob Sie aus dem Home-Verzeichnis, oder Unterverzeichnis kommt.


jan@jack:~/tmp> cat test_home.sh
if test "$HOME/`basename \"$datei\"`" = "$datei"; then
echo "$datei liegt direkt in HOME"
elif test "$HOME`echo \"$datei\" | sed \"s#^$HOME##\"`" = "$datei"; then
echo "$datei liegt in einem Unterverzeichnis von HOME"
else
echo "$datei liegt ganz woanders"
fi
exit 0
jan@jack:~/tmp> export datei=/home/jan/zahl.txt
jan@jack:~/tmp> ./test_home.sh
/home/jan/zahl.txt liegt direkt in HOME
jan@jack:~/tmp> export datei=/home/jan/tmp/zahl.txt
jan@jack:~/tmp> ./test_home.sh
/home/jan/tmp/zahl.txt liegt in einem Unterverzeichnis von HOME
jan@jack:~/tmp> export datei=/home/juchu/tmp/zahl.txt
jan@jack:~/tmp> ./test_home.sh
/home/juchu/tmp/zahl.txt liegt ganz woanders
Jan

Chito
19-04-2008, 09:19
vielen dank für eure hilfe ... das hilft mir doch sehr.

Eine Frage habe ich aber noch an euch:

/home/tmp/user/datei.txt

wie kann ich mit dem cut - Befehl nur datei.txt abschneiden.

Ich versuchte ja schon

cut f1 -d '/' ???

aber das schneidet er mir ja nur das HOME heraus. Wie aber arbeitet cut von rechts nach links?


thx :)

jeebee
19-04-2008, 16:05
export datei=/home/tmp/user/datei.txt
dirname $datei
gibt

/home/tmp/user

HTH jeebee

BLUESCREEN3D
19-04-2008, 16:34
Und falls du doch mal cut von rechts nach links benutzen musst:

echo "/home/tmp/user/datei.txt" | rev | cut -d '/' -f 1 | rev
Aber in diesem Fall ist wirklich dirname geeigneter.

core
20-04-2008, 16:15
Ähem.... DIRNAME und BASENAME werfe ich mal ein:


$ dirname /home/jg/tmp/file.txt
/home/jg/tmp
$ basename /home/jg/tmp/file.txt
file.txt


Problem 1: $HOME mit ausgabe von `dirname $foo` vergleichen
Problem 2: basename statt cut verwenden.

Oder habe ich was überlesen? ;)

BLUESCREEN3D
20-04-2008, 19:44
@Chito: Was wolltest du denn nun haben? Den Dateinamen oder das Verzeichnis?

Chito
23-04-2008, 10:20
Und falls du doch mal cut von rechts nach links benutzen musst:

echo "/home/tmp/user/datei.txt" | rev | cut -d '/' -f 1 | rev
Aber in diesem Fall ist wirklich dirname geeigneter.


Vielen Dank hierfür, das kann ich gut mit zu meinen Akten heften ;)

Nein, ich brauchte nur basename ...


export datei=/home/tmp/user/datei.txt
basename $datei


... mit dem export - befehl hat es dann auch funktioniert.


Vielen Dank für alles an ALLE! :) ... hat mir sehr weiter geholfen.