我正在使用命令行SVN。来自Windows上的TortoiseSVN,每当我尝试选择一个特定的文件来恢复,差异,提交等时,我发现它非常繁琐,当路径非常长时,这样:
src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java
如果我想在这个文件上做差异,我必须输入所有这些:
svn diff src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java
所以,我试着这样做:
svn st | grep Foo
但它返回:
M src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java
现在,如何剥离“M”部分,这样我才能获得文件路径?
答案 0 :(得分:1)
svn st | grep Foo | sed 's/M *//'
答案 1 :(得分:1)
svn st | grep Foo | sed 's/^[A-Z]\s*//'
答案 2 :(得分:1)
如果'svn st'总是返回(不需要的)第一列,然后返回路径,请尝试:
svn st | grep Foo | awk '{print $2}'
答案 3 :(得分:1)
为此,我使用awk
:
svn st | awk '/Foo/ { print $2 ; }'
awk
使用匹配指令的脚本和代码块在匹配的行上执行。这会匹配其中包含Foo
的行并打印第二个字段。 (使用默认的FS
字段分隔符,它应该在制表符和空格上分开。)
您还应该查看shell的文件名完成功能;大多数较新的shell包括完成部分类型文件名的功能。对于你的长篇例子:
src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java
我可能会这样输入:
src/com/com<tab>/stuff/pla<tab>/appn<tab>/subp<tab>/subsub<tab>/Foo<tab>
根据目录中的文件,您可能需要输入更多或更少的内容。