如何列出在Git中更改了文件的所有文件夹名称?

时间:2018-03-17 14:30:21

标签: bash git shell

git diff --name-onlygit diff --name-status将列出所有已更改的文件,但是没有命令列出包含已更改文件的所有文件夹名称。

例如,使用此目录树:

test/
|
|__B/
|
|____b1.txt
|
|__C/
|
|____c1.txt

如果b1.txtc1.txt发生了变化,我希望BC作为输出。

2 个答案:

答案 0 :(得分:6)

这是一种方式:

git diff --name-only | xargs -L1 dirname | uniq

<强>解释

  • git diff --name-only:列出所有已更改的文件
  • xargs -L1 dirname:删除文件名以仅保留目录
  • uniq:删除重复项

随意创建an alias,这样您就不必在每次需要时输入整个命令:

alias git-diff-folders="git diff --name-only | xargs -L1 dirname | uniq"

答案 1 :(得分:2)

此命令将提供顶级目录的结果。 git status | cut -d'/' -f1

我目前正在寻求更深入的解决方案 bash中的$ {PWD ## * /}可以找到更正确的问题解决方案。

尝试使用与此npm解决方案类似的git为您编写解决方案:

get the path where npm gulp called from

我不再在这个问题上寻找答案,

git diff --name-only | xargs -L1 dirname | uniq

是Pᴇʜ

提供的正确答案

在编辑后

在我的Mac电脑上运行