我正在尝试从GitHub克隆一组存储库。它可以工作,但我无法弄清楚如何使用xargs
添加目标文件夹。这是我目前拥有的
curl "https://api.github.com/orgs/$org/repos?access_token=$authToken" |
grep -e 'clone_url*' |
grep -w clone_url |
grep -o '[^"]+://.+.git' |
xargs -L1 git clone
除了我希望克隆的存储库进入另一个目录./my_folder
.我尝试更改最后一行:
xargs -L1 git clone "./my_folder"
但这行不通。我无法弄清楚如何使用xargs
添加额外的参数。正常方法是将目标文件夹添加到命令的末尾,就像这个答案一样,但我不能完全弄清楚如何使用我的代码做到这一点。
这里的问题是每个git clone
操作的目标文件夹需要是一个单独的子目录my_folder
,其名称可能类似于 git URL 的 basename 部分。 这可能很难使用xargs
来实现,所以我建议用显式循环代替 xargs:
... | while read repo_url ; do git clone $repo_url my_folder/$(basename $repo_url) ; done
这将在管道末尾的curl
和grep
命令之后进行。
.git
当然,如果您愿意,您可以通过将$(basename $repo_url)
替换为
$(basename $repo_url | sed 's/.git$//')`
为方便起见,将它们放在一起:
curl "https://api.github.com/orgs/$org/repos?access_token=$authToken" |
grep -e 'clone_url*' |
grep -w clone_url |
grep -o '[^"]+://.+.git' |
while read repo_url
do
git clone $repo_url my_folder/$(basename $repo_url | sed 's/.git$//')
done