我的根文件夹中有几个带有git分支的子文件夹。我使用这些建议将git分支更改为每个子模块:
alias gch='git checkout'
gchb() { gch $(gbr -r | grep "$1" | awk '{print substr(""$1"",8,length)}'); }
如何在每个子目录中执行此命令?
答案 0 :(得分:1)
首先,在这种情况下,无需同时使用grep
和awk
:
gchb() {
gch $(gbr -r | awk '($0 ~ '"$1"'){print substr(""$1"",8,length)}');
}
您可能会使用类似以下的内容:
for subdir in "${DIR}"/*; do
[[ -d "${subdir}" ]] && gchb "${subdir}"
done
您可能还可以将find
与-exec
选项一起使用来执行此类任务,例如:
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
以避免子*子文件夹中的递归。