PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Find und absolute Filenamen



Waxolunist
03-01-2007, 11:02
Hallo

Wenn ich


find ../Music -type f -iname "*.ogg" -print

angebe, gibt er mir all meine oggs mit relativem Pfad zurück. Wie kann ich den absoluten Pfad ausgeben lassen?

Also /home/christian/Music/Interpret/Album/Lied.ogg statt ../Music/...... usw.

lg, christian

rais
03-01-2007, 11:18
Moin moin,
so vllt?


find ~/Music -type f -iname "*.ogg" -print

MfG,

Waxolunist
03-01-2007, 12:30
Die Tilde ersetzt eigentlich nur /home/christian wenn ich als christian angemeldet bin aber nicht "..".

Was wenn Music ein Unterverzeichnis von media ist, müsste ich nun ~/media/Music reinschreiben.

Das ganze ist für ein Skript und ../Music ist der Übergabeparameter.

Waxolunist
03-01-2007, 12:32
Im shelldorado hab ich jetzt eine Lösung gefunden. Die funktioniert soweit einmal:

http://www.shelldorado.com/shelltips/script_programmer.html



D=`dirname "$relpath"`
B=`basename "$relpath"`
abspath="`cd \"$D\" 2>/dev/null && pwd || echo \"$D\"`/$B"


Aber wenn jemand eine einfachere Lösung zusammen mit find -exec oder so kennt, wär ich trotzdem dankbar.

lg, christian

403
08-01-2007, 07:45
moin :D

oerhm?
for m in ../Music/*.ogg; do echo "`dirname $m`"/"`basename $m`" | tr -d '..' ; done

Erst hoffte ich auf find's -regex Option...


for m in ../Music/*/*.ogg; do echo "`dirname $m`"/"`basename $m`" | tr -d '..' ; done


wuerde Unterordner finden.

Ich habe mir mal wegen mangelnder Uebersicht einen Cronjob mit Sed geklau^H^H^H^Hbastelt :D
Zum Beispiel fuer nur mp3files etwa so:



locate \.mp3 | sed -n s'/\(.*\)\/.*\.mp3/\1/p'|grep -v \.ogg|sort -u


Nachteil ist, das man die locate Datenbank aktuell halten muss, oder
wenn man das nicht will, kann man noch ein xargs stat heranhaengen.


Jetzt bin ich aber auf eine Loesung mit find gespannt :D