3 Stimmen

Dateiname aus Pfad in csh-Shell extrahieren -- aus Liste von Dateien

Wie extrahiert man den Dateinamen aus dem Pfad; ich habe eine Liste von Dateien. Ich benutze csh shell, und habe awk, sed, perl installiert.

/dfgfd/dfgdfg/filename

sollte mir

Dateiname

Ich habe es mit basename versucht:

    find $PROJDIR -name '*.c' -o -name '*.cc' -o -name '*.h'
 | xargs grep -l pattern | xargs basename

und ich erhielt die folgende Fehlermeldung:

basename: zu wenige Argumente Versuchen Sie `basename --help' für weitere Informationen.

thx

11voto

Thomas Punkte 160390

Das Standardprogramm basename macht, was Sie wollen:

$ basename /dfgfd/dfgdfg/filename
filename

1voto

FModa3 Punkte 13749

Diese Art von Abhilfe hat bei mir funktioniert. Sie sagten, Sie hätten Perl, also sollte es laufen. Es ersetzt den gesamten Text ohne Leerzeichen bis zum letzten / durch nichts (es wird also effektiv gelöscht).

find $PROJDIR -name '*.c' -o -name '*.cc' -o -name '*.h'
 | xargs grep -l pattern | perl -pi -e "s/\S+\///g"

0voto

vehomzzz Punkte 40002

Ok, ich habe eine gute Lösung mit AWK gefunden:

    find  $PROJECT_DIR  -name '*.c' -o -name '*.cc' -o -name '*.h' 
| xargs grep -l PATTERN | awk -F "/" '{print $NF}'

0voto

ryan Punkte 119
find $PROJDIR -name '*.c' -o -name '*.cc' -o -name '*.h' | xargs grep -l pattern 
| xargs -n1 basename

Versuchen Sie das!

da basename einen einzelnen Pfadparameter als Argument akzeptiert, zwingen wir xargs, ihn einzeln aufzuspalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X