我有一个根文件夹,其中包含几个带有 git 分支的子文件夹。我使用这些推荐将 git 分支更改为每个子模块:
alias gch='git checkout'
gchb() { gch $(gbr -r | grep "$1" | awk '{print substr(""$1"",8,length)}'); }
如何在每个子目录中执行此命令?
首先,在这种情况下,不需要同时使用grep
和awk
:
gchb() {
gch $(gbr -r | awk '($0 ~ '"$1"'){print substr(""$1"",8,length)}');
}
您可能可以使用以下内容:
for subdir in "${DIR}"/*; do
[[ -d "${subdir}" ]] && gchb "${subdir}"
done
您可能还可以使用带有-exec
选项的find
来执行此类任务,例如:
1(在一个单独的脚本中定义你的别名和函数(例如,我们称之为.gittutilsrc
(,可以用source
加载:
#!/bin/bash
alias gbr='git branch'
alias gch='git checkout'
gchb() {
gch $(gbr -r | awk '($0 ~ '"$1"'){print substr(""$1"",8,length)}');
}
2(像这样在查找中使用它:
find "${DIR}" -type d -a -maxdepth 1 -exec bash -c "source .gittutilsrc && gchb {}" ;
注意:此处使用-mexdepth 1
以避免子 *-文件夹中的递归性。