[英]Git move & commit all directories matching a string with Bash
我有大約150個目錄,我想在git repo中重命名(並提交)。 路徑類似於;
/src/app/testing/linux/testindexscreen_home/image.png
/src/app/testing/osx/testindexscreen_home/image.png
/src/app/testing/win/testindexscreen_home/image.png
所以我想運行mv
,然后commit
對符合所有路徑indexscreen_
刪除字符串的一部分。
我在使用git bash
的Windows框上,此刻有find& 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
並擁有諸如“重命名測試房”之類的提交消息
因此,我對bash的理解在這里並沒有得到太大改善(我需要找到一些好的文檔),但是我已經弄清楚了我所運行的東西的問題。
將我的mv
命令更改為以下命令,即可根據需要成功重命名目錄;
find . -name '*indexscreen_*' -exec sh -c 'file={}; git mv $file ${file/indexscreen_/}' \\;
我認為這可以滿足您的需求:
find . -name "*indexscreen_*" -a -type d -exec sh -c 'n={}; git mv {} ${n/indexscreen_/}' \;
但是當find運行時我消失了文件時,find抱怨。
使用xargs的相同解決方案不會抱怨:
find . -name "*indexscreen_*" -a -type d |xargs -i sh -c 'n={}; git mv {} ${n/indexscreen_/}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.