Bash - 仅从 git 状态获取目录名称

Bash - Get only directory names from git status

我只需要 git 状态的目录名称。作为我使用 git status -s 时的缩写形式,我得到以下输出。

M stack/pipeline.yaml
?? stackother/

而我只需要 stack/stackother/ 作为一个列表或者只是作为一个输出,我可以通过管道传递到下一组命令。

基本上,我需要新创建的目录或文件有一些变化的目录。有什么方法可以使用 git 来实现吗?

编辑: 我实际上需要每个更改文件的父目录,例如以下示例:

stack/pipeline.yaml
stack/newstack/master-pipeline.yaml
stack/newstack/test/test11.txt
stack/newstack/test/tester.txt

我明白了

stack
stack/newstack
stack/newstack/test

而不是

stack

因此这个问题不是链接问题的重复。对于基本示例,瓷器的答案有效,但要进行更多更改,我必须执行 git status -s -uall 并处理此输出。

您可以按照以下方式进行:

git status -s -uall | awk '{print }' | xargs -L1 dirname| uniq