2016-09-30 30 views
0

我正在使用子文件夾中的多個庫進行C++項目。我正在使用的雲IDE需要所有文件位於同一文件夾才能使用雲閃功能。 我現在有2個腳本。一種是平滑目錄結構,另一種是平滑包含以匹配新佈局。 到目前爲止,我已經加入以下我用它來取代絕對路徑包括腳本:如何壓扁多個文件中的#include路徑

find $(_CLOUD_SRC_FOLDER) -type f \(-iname \*.cpp -o -iname \*.hpp \) -maxdepth 3 -exec sed -i.bak 's/\#include "..\/lib\//#include "/g' {}

上面一行只適用於#include "../lib/filename.hpp"。我如何重新格式化以匹配#include "any/path/filename.hpp"並用#include「filename.hpp」替換?

回答

1

嘗試這種情況:

find $(_CLOUD_SRC_FOLDER) -type f \(-iname \*.cpp -o -iname \*.h -o -iname \*.hpp \) -maxdepth 3 -exec sed -i.bak 's/\(#include "\)[^"]*\/\([^"]*"\)/\1\2/' {} + 

#include字符串和文件名從路徑和輸出使用反向引用捕獲。

+0

我稍微編輯它,但它的工作就像一個魅力! – Alain1405