2017-07-06 19 views
0

Ich muss alle Quelldateien einschließlich verknüpfter Dateien finden, aber defekte Links zu vermeiden.Finden Sie alle Dateien ohne defekte Links

Ich habe eine c/C++ Quellcode-Bereich, mit einigen Dateien mit Dateien zu anderen Verzeichnissen verknüpft und ich möchte sie mit Cscope indizieren. Wenn es defekte Links sind, gibt cscope einen Fehler:

cscope: cannot find file /...file.... 

Was muß ich eigentlich eine saubere cscope.files ohne gebrochen verknüpfte Dateien zu erstellen.

Was ich zur Zeit tun, ist:

find $code_path -type f -name '*.h' -o -name '*.c' -o -name '*.cpp' >> cscope.files 

Antwort

0

find mit wenig Hilfe von file den Dateityp zu bekommen, und print -Ing die Dateien, die symbolische Verknüpfung Ziel haben nicht gebrochen:

find "$code_path" -type f -name '*.h' -o -name '*.c' -o -name '*.cpp' \ 
    -exec sh -c 'file "$1" | grep -qv broken' _ {} \; -print 

Dies hat den Vorbehalt, jeweils eine Datei zu verarbeiten.


wenn Sie keine Dateinamen mit Leerzeichen haben (s) oder in einem Steuerzeichen (s) können Sie find ... -exec {} + Fähigkeit des Umgangs mit der maximalen Anzahl von Datei (en) in einem Rutsch nutzen, ohne ARG_MAX Triggerung und immer die gewünschten Dateinamen mit awk:

find "$code_path" -type f -name '*.h' -o -name '*.c' -o -name '*.cpp' \ 
    -exec file {} + | awk '!/broken/ {print $1}' 

Randbemerkung: Zitat Ihre variable Erweiterungen Wort Spaltung und Pfadname Expansion stattfinden können auf verhindern, die Erweiterung.

Verwandte Themen