我正在尝试在一堆文件夹上运行git pull
。这就是我到目前为止得到的:
find . -type d -name .git
| xargs -n 1 dirname
| while read line; do cd $line && git pull; done
问题是cd
不起作用,我遇到了很多错误:
sh: cd: ./project_one: No such file or directory
sh: cd: ./project_two: No such file or directory
...
但是当我做cd ./project_one
时,它可以正常工作。怎么了?有什么想法吗?
在子壳中执行cd
和后续操作,以使主过程保留在适当的目录中。
... | while read line; do ( cd $line && git pull ); done
它看起来像是指定相对文件与绝对文件路径的问题。将脚本的" find . type -d -name .git ...
"部分中的.
更改为$(pwd)
,并且应将目录名称作为绝对路径传递到WHILE循环:
find $(pwd) -type d -name .git
| xargs -n 1 dirname
| while read line; do cd $line && git pull; done
尝试一下,它应该工作=)