2017-07-06 1 views
0

リンクされたファイルを含むすべてのソースファイルを見つける必要がありますが、壊れたリンクは避けてください。壊れたリンクのないすべてのファイルを見つける

私はc/C++ソースコード領域を持っていますが、いくつかのファイルは他のディレクトリにファイルにリンクされており、cscopeを使用してインデックスを作成したいと考えています。壊れたリンクがある場合は、cscopeのは、エラーを与える:

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

私は実際に必要なもの壊れたリンクされたファイルなしできれいcscope.filesを作成することです。

私が現在やっていることは次のとおりです。

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

答えて

0

findfileから少し助けを借りて、ファイルタイプを取得するため、及びprintシンボリックリンク先が壊れていないファイル-ing:

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

これは、一度に1ファイルずつ処理するという警告があります。あなたは空白(S)または任意の制御文字(複数可)を持つ任意のファイル名を持っていない場合、あなたはARG_MAXをトリガすることなく、一度にファイルの最大数(複数可)を扱うのfind ... -exec {} +機能を活用することができ


、および

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

サイドノート:に行われてから、単語分割とパス名展開を防ぐために、あなたの変数の展開を引用awkで希望のファイル名を取得拡張。

関連する問題