簡體   English   中英

Git移動並提交所有與Bash匹配的目錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM