Git 排除bash循环中的文件夹
我正试图编写一个脚本来分离一个GitHub回购协议,其中有许多项目都被划分为单独的回购协议,同时保留它们的git历史记录。我知道如何手工完成所有这些,但我想通过编写脚本来为我节省时间 这是我到目前为止所拥有的 剧本Git 排除bash循环中的文件夹,git,bash,github,git-bash,Git,Bash,Github,Git Bash,我正试图编写一个脚本来分离一个GitHub回购协议,其中有许多项目都被划分为单独的回购协议,同时保留它们的git历史记录。我知道如何手工完成所有这些,但我想通过编写脚本来为我节省时间 这是我到目前为止所拥有的 剧本 #!/bin/bash REPO_DIR="C:/Users/Jerred/GitKraken/harding-computer-science/" cd "$REPO_DIR" for X in "`find . -maxdepth 2 -mindepth 2 -type d`
#!/bin/bash
REPO_DIR="C:/Users/Jerred/GitKraken/harding-computer-science/"
cd "$REPO_DIR"
for X in "`find . -maxdepth 2 -mindepth 2 -type d`"
do
if [[ "$X" == *"git"* ]]; then
echo "NO MATCH: $X"
continue;
fi
echo "$X"
done
这工作得很好,只是它包含了.git文件夹,应该将其排除在外。由于某种原因,它不起作用
输出
NO MATCH: ./.git/hooks // This is ignored like I want
./.git/info // This isn't ignored but it should be
./.git/logs
./.git/objects
./.git/refs
./COMP 151 - Programming II/Lab 10 Resources
./COMP 151 - Programming II/Lab 11 Resources
我怀疑是否需要它,但这是GitHub上的。您在
find
命令周围的双引号将其输出转换为一个字符串(其中包含新行)。您正在循环一个与*“git”*
匹配的X
值。因此,您可以打印无匹配:
,后跟完整字符串(及其新行)。证明:在循环开始处添加echo foobar
,并确保只打印一次
你可以试试:
find . -maxdepth 2 -mindepth 2 -type d ! -path ./.git/\*
它应该做你想做的事情(没有
不匹配
输出)。在查找
命令周围的双引号将其输出转换为一个字符串(其中包含新行)。您正在循环一个与*“git”*
匹配的X
值。因此,您可以打印无匹配:
,后跟完整字符串(及其新行)。证明:在循环开始处添加echo foobar
,并确保只打印一次
你可以试试:
find . -maxdepth 2 -mindepth 2 -type d ! -path ./.git/\*
它应该做你想要的(没有<代码>没有匹配< /代码>输出).< /p>它不回答你的问题,但是你是否考虑使用<代码>路径> /COD>选项<代码>查找< /代码>过滤<代码> git /*<代码>?尝试添加
-路径./git /\*/COD>也许是您的find命令。它不回答您的问题,但是您是否考虑使用<代码>路径> /COD>选项<代码> find <代码>过滤<代码> git /*<代码>?尝试添加-path./.git/\*
到您的find命令,可能吧。这很有效。我没有意识到find命令周围的引号导致它输出一个字符串,但现在它是有意义的。这是可行的。我没有意识到find命令周围的引号导致它输出一个字符串,但现在它有了意义。