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


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.