Scripting

列出未儲存在 Git 儲存庫中的文件

  • February 9, 2017

我想找出某個目錄中的哪些文件不是由 Git 管理的。之所以如此,是因為我使用 Git 進行備份,並且我希望最終將我的所有文件都放在裡面。

什麼unix工具可以做到這一點?有沒有辦法以find一種相當有效的方式來做到這一點?

例子:

我有一個儲存 RFC 相關內容的文件夾,如下所示:

.
├── TheFile
└── tests
   ├── 4180
   │   └── data
   │       ├── bad
   │       └── good
   │           └── linebreaks.csv
   ├── get-rfc.sh
   ├── .git <contents omited>
   ├── LICENSE
   ├── README
   └── rfc4180.txt

我正在尋找一個可以輸出我的命令:

TheFile
find the_starting_dir \( -type d -exec test -d '{}'/.git \; -prune \) -o -print

不是最便攜的 find 呼叫,但可以與 GNU find 一起使用。

Find 遍歷目錄樹。該術語-prune返回 true,但停止find進一步處理子樹。所以左邊-o說“如果這是一個目錄,如果test說有一個子目錄被呼叫.git,如果prune返回true,那麼我們就完成了樹中這個東西的處理”。右邊寫著“否則列印出來”

如果您不想列印目錄,請更改-print為,\( ! -type d -print \)但您將不會得到任何有關空目錄的指示。

您可以將 更改-print-ls以獲取列表,-printf 請參閱手冊等。

引用自:https://unix.stackexchange.com/questions/323433