win msys上的unix`find`,没有这样的文件或目录



我正在尝试在一堆文件夹上运行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

尝试一下,它应该工作=)

最新更新