grep限制文件路径的深度

时间:2014-06-17 15:26:11

标签: bash grep zsh

我保存了很多用作变量的目录(例如〜保存)。当我在grep中使用这些目录时,我得到完整的文件路径(来自根目录)。

grep -r foo ~saved

产量

/a/very/long/and/complex/file/path/to/a/file/that/contains/foo.xml <foo>

这很难理解,而且基本上没有用。我想要的是以下内容或类似的简短内容。

~saved/contains/foo.xml <foo>

3 个答案:

答案 0 :(得分:1)

grep -r foo path| sed "s:$(~shared)/:shared/:" 

你可以对grep输出进行后期处理。

答案 1 :(得分:1)

在不知道~saved究竟指的是什么的情况下,这是一个黑暗中的镜头:

grep -r foo ~saved | sed "s/$(~saved)/~saved/g"

答案 2 :(得分:0)

编辑:我误解了这个问题......

试试这个:

path=$(echo ~saved|sed -re 's/\//\\\//g'); grep -r foo ~saved |  sed -re "s/$path/\~saved/g"

示例:

path=$(echo ~root|sed -re 's/\//\\\//g'); grep -r find ~root |  sed -re "s/$path/\~root/g"
~root/.subversion/config:###   examines by default to find this information ($EDITOR, 
~root/test-all.sh:for i in $(find ~root -type d | grep load); do
~root/.siegerc:# requested by the server. If it finds a match, it will send