2010-07-07 145 views
8

有一些文件夾包含空格,因此無法使用cscope對這些文件夾編制索引。如何將cscope與包含空格的路徑一起使用

我可以請你幫忙解決這個問題,或者有什麼建議。

感謝 朱利葉斯·


感謝您的答覆。

我的步驟來使用cscope像下面

  • 發現。 -name'* .scala'> cscope.files
  • cscope -b
    在此步驟。我看到的消息表明找不到文件:
    cscope:無法找到文件/工作/項目/副本
    cscope:找不到文件
    cscope:無法找到文件fp/src/main/jav ....
    實際上fp的副本是一個文件夾。所以我認爲cscope無法識別包含空間的文件夾。

我遇到了這個問題,當我試圖用cscope.maybe使用Vim,我需要將此問題移到其他標記。

+1

您使用的Vim標籤。這是因爲你試圖在Vim中使用':cscope'命令嗎?如果是這樣,你能顯示你正在嘗試的命令以及你得到的錯誤嗎? – jamessan 2010-07-07 16:46:24

回答

3

您可以使用find的-exec迫使周圍的輸出報價:

find . -name "*.scala" -exec echo \"{}\" \; > cscope.files 

您可能需要惹報價/轉義,如果你從一個腳本這樣做左右。

+0

這個答案需要1秒鐘才能完成〜100個文件。我的答案需要1秒鐘才能完成〜100,000個文件。 – webb 2016-03-03 16:03:37

+1

@webb:使用fprintf(Olivier Diotte的回答)當然似乎比我的天真提議更好地使用find。 – idbrii 2016-04-05 17:37:42

0

雙引號文件名在cygwin中起作用,其中用反斜槓轉義不起作用。

$ find $PWD -name "*.scala" | sed -e 's/^/"/g' -e 's/$/"/g' > cscope.files 
+0

sed's /.*/"&"/'稍快 – webb 2016-03-03 16:09:16

2

pydave的回答很慢。這樣,花了0.10s,其中pydave的回答了14S:

find . -name "*.scala" | awk '{print "\""$0"\""}' > cscope.files 
+0

Kudos!快速工作 – Melon 2015-11-09 07:17:48

4

你可以把它簡單地使用GNU找到至少,你可以使用該-printf-fprintf選擇呢:

find . -type f -fprintf cscope.files '"%p"\n' 
+0

簡化%h /%f到%p – webb 2016-03-03 15:59:38

+1

您的答案是最快的:比我的快8%,比sed快14%。 。 。和1000倍一樣快EXE! – webb 2016-03-03 16:19:18

相關問題