2017-07-06 84 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 

這有一次處理一個文件的警告。


如果你沒有用空白(S)或任何控制字符(S)的任何文件名,你可以利用處理一氣呵成文件(S)的最大數量的find ... -exec {} +能力,而不觸發ARG_MAX,並獲得所需的文件名與awk

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

旁註:引用您的變量擴展,以防止字的拆分和路徑擴展從發生擴張。

相關問題