Bagaimana cara menggunakan find untuk membuat daftar semua file kecuali yang di bawah .git?

1

Saya ingin menemukan daftar file (tidak ada direktori) kecuali yang di bawah .git

Saya mencoba beberapa findsintaks yang disarankan untuk dicapai seperti yang disarankan dalam pertanyaan SO ini:

https://superuser.com/questions/397307/how-to-ignore-certain-filenames-using-find

Inilah yang saya coba

find . -type f ! -name '*.git*' 

find . \( -type f  -prune -o \! -name '*git*' \)
find . \( -type f  -prune -o \! -name *git* \)
find . \( -type f  -prune -o ! -name *git* \)

Tetapi output selalu berisi file dalam .git. Berikut adalah sebagian daftar

.
./.coveragerc
./.DS_Store
./.git/.DS_Store
./.git/COMMIT_EDITMSG
./.git/config
./.git/FETCH_HEAD
./.git/HEAD
./.git/hooks
./.git/hooks/disable-commit-msg
./.git/hooks/pre-push
./.git/hooks/prepare-commit-msg
./.git/index
./.git/info
./.git/info/exclude
./.git/info/refs
./.git/logs
./.git/logs/HEAD
./.git/logs/refs
./.git/logs/refs/heads
./.git/logs/refs/heads/1312

Versi OS X adalah El Capitan, dan saya menggunakan zsh. findberlokasi di/usr/bin

Apakah ini masalah OS X find? Jika demikian, bagaimana saya bisa mencapai hasil yang saya inginkan?

SUNTING

Saya mencoba perintah ini

find . \( -type d -name '.git' -o -type f  \)  -prune

dan itu lebih dekat dengan apa yang saya inginkan. Namun dalam output saya masih bisa melihat folder.git

Anthony Kong
sumber
1
Perbaikan cepat:find . | grep -v '^\./\.git'
0942v8653
Contoh-contoh dalam pertanyaan yang ditautkan tidak memangkas atau memiliki -o atau memiliki (jadi dari mana mereka berasal - + git akan cocok lebih dari yang Anda inginkan
Mark
Setuju jawaban yang diterima tidak benar tetapi gunakan -nameal sesuai komentar
Mark
Saya mendapatkan ini dari jawaban kedua tetapi saya belum menempatkannya dalam urutan yang benar.
Anthony Kong

Jawaban:

1

Jawaban yang diterima tidak benar tetapi dengan komentar itu memulai Anda.

Untuk tidak mendapatkan file html

find . -type f   ! -name '*.html'

-nama loks di bagian file path untuk seluruh path yang Anda butuhkan --yaitu benar

find . -type f  ! -wholename '*/.git/*' ! -name '*.html'

Jadi hanya dapatkan file (-type) abaikan direktori .git - perhatikan Anda harus memasukkan pembatas direktori dan. atau Anda menghapus file seperti .gitconfig yang merupakan file yang valid

OK ini terlihat pada semua file -prune mungkin terlihat kurang tetapi kecepatan mungkin tidak masalah itu lebih baik karena dalam semua kode untuk mendapatkan hal kerja yang dimengerti terlebih dahulu

Menandai
sumber