打印当前目录中不包含.git的所有子目录

维多利亚·德雷克

我试图写一条bash行,它将查看我当前文件夹中的所有子目录,并告诉我是否有不包含“ .git”的行。伪:

for subdir in currentdir
  if .git does not exist
    print subdir

这是我正在尝试的单行代码,该行不起作用,并且似乎打印了所有子目录:

find . -maxdepth 1 -type d -execdir $SHELL -c '[ ! -d ".git" ] && echo "not git repo:" {}' $SHELL -c '{}' ';'

我找到了一些解决方案,可以让我打印出所有具有.git的子目录,就像这样-我正试图做相反的事情。

我究竟做错了什么?这可能吗?

muru

首先,该-execdir命令看起来很奇怪(2x $SHELL -c?):

$SHELL -c '[ ! -d ".git" ] && echo "not git repo:" {}' $SHELL -c '{}' ';'

另外,-execdir在包含匹配实体的目录中运行命令(因此,它正在检查的目录的父目录).适用于所有子目录。测试在错误的目录中运行。和:

  • 您不应该{}exec/-execdir命令中重用
  • 没有理由使用$SHELL那是用户的登录shell,对于在脚本等中的用法没有任何特殊意义。仅在使用sh,或bash或者ksh如果这些是你选择的壳,直接。

这可能起作用:

find . -maxdepth 1 -type d -exec sh -c '! [ -d "$1/.git" ] && echo "not git repo: $1"' _ {} \;

-exec命令检查.git传入的参数中是否存在,该参数又是每个子目录。您可能还想用来-mindepth 1排除当前目录:

find . -maxdepth 1 -mindepth 1 -type d -exec sh -c '! [ -d "$1/.git" ] && echo "not git repo: $1"' _ {} \;

或者,仅使用bashdotglob即可匹配隐藏目录:

(shopt -s dotglob; for d in ./*/; do [[ -d $d/.git ]] || echo "not git repo: $d"; done)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Git添加所有子目录

运行git pull所有子目录

不包含任何文件的所有子目录的路径

获取当前目录中所有子目录的列表

递归打印所有目录和子目录

打印所有目录和子目录功能

从所有子目录安装软件

Git在目录及其子目录中的所有跟踪文件上跳过工作树

Git:忽略所有文件和目录,但不忽略子目录中的某些代码

从目录复制所有文件,而不创建子目录

如何计算目录中存在的所有子目录?

如何从目录中删除所有子目录?

查找目录及其子目录中的所有文件

如何更改当前目录,子目录以及子目录的子目录中的文件所有权?

在作为git repos的所有子目录中运行“ git gc”的Powershell命令

如何使用vim打开当前目录和所有子目录中的所有文件?

从目录和所有子目录获取所有文件,但不包含一个子目录

Git会忽略某个目录的所有子目录中的某种类型的所有文件吗?

将所有子子目录的内容仅移动到其子目录中

列出子目录中的所有文件,按子目录名称排序

Git递归地忽略将子目录中的所有文件列入白名单

使用git查看子目录中与特定文件扩展名相关的所有日志

如何 git 忽略所有子目录中以 XX-version.properties 结尾的文件?

git排除文件夹中除子目录外的所有内容

Git,忽略除子目录中的一些文件以外的所有文件

如何忽略除单个文件之外的git仓库子目录中的所有内容?

Shell脚本打印所有子目录的路径

如果用户输入具有子目录的目录,请在根目录中搜索所有子目录

搜索包含 0 个文件的所有子目录