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

标签 bash git shell

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

例如,对于这个目录树:

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

如果b1.txtc1.txt改变了,我想得到BC 作为输出。

最佳答案

这里有一个方法:

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"

关于bash - 如何列出在 Git 中更改了文件的所有文件夹名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49338012/

相关文章:

linux - 查找命令以列出在 bash 脚本中不起作用的符号链接(symbolic link)文件

Bash 脚本 - 如何从文本文件中删除行/单词?

bash - 无法在变量中修剪\r

shell - 提示时输入密码

arrays - 重置数组并用 bash 脚本中的值填充它

bash - 带有 wget 的 Shell 脚本获取减去 1 天的日期

git - 为什么 .gitignore 不适用于 Android Studio 中的新项目?

git - 我忘记在进行更改之前 checkout 分支

Git 更改要提交的文件标记为已删除

linux - 使用 sh 运行 bash 脚本