2014-03-03 22 views
1

字符串我有大约150目录,我想在一个git回购重命名(并提交)的所有目录。路径类似于;Git的举措和承诺匹配与猛砸

/src/app/testing/linux/testindexscreen_home/image.png 
/src/app/testing/osx/testindexscreen_home/image.png 
/src/app/testing/win/testindexscreen_home/image.png 

所以我想运行在匹配indexscreen_其中删除字符串的一部分的所有路径mv然后commit

我在一个窗口框中,使用git bash,此刻有发现& mv命令试图将文件夹移入自己。我不确定你如何删除匹配的字符串;

find . -name '*indexscreen_*' -exec sh -c 'file={}; git mv $file ${file/"*indexscreen_*"/}' \;

它与提交包含我想应该;

find . -name '*indexscreen_*' -exec sh -c 'file={}; git mv $file ${file/"*indexscreen_*"/}; git commit -m "Renamed $file"' \;

所以我想有一个bash命令把这些路径中;

/src/app/testing/linux/testhome/image.png 
/src/app/testing/osx/testhome/image.png 
/src/app/testing/win/testhome/image.png 

而且有提交信息,如“更名testhome”

回答

1

所以我的bash的认识有了这里不多(我需要找到一些好的文档)提高了,但我已经想通了,这个问题是什么我之前在跑步。

更改我的mv命令以下成功改名的目录,我想;

find . -name '*indexscreen_*' -exec sh -c 'file={}; git mv $file ${file/indexscreen_/}' \;

0

我想这你想要做什么:

find . -name "*indexscreen_*" -a -type d -exec sh -c 'n={}; git mv {} ${n/indexscreen_/}' \; 

但是当我消失的文件中查找正在运行时,我发现抱怨。

使用xargs的相同的溶液不抱怨:

find . -name "*indexscreen_*" -a -type d |xargs -i sh -c 'n={}; git mv {} ${n/indexscreen_/}'