Cara mendaftar semua file sumber (* .c, * .cpp, * .h)


15

Saya ingin mencari file sumber (* .c, * .cpp, * .h) yang berisi di Linux / MinGW / Cygwin, dan secara rekursif di semua sub direktori.

Ide dasar saya menggunakan finddan grep. Namun, membangun ekspresi reguler yang dapat memeriksa nama file yang diberikan adalah * .c, * .cpp, atau * .h tidak mudah. Bisakah Anda membantu saya?

Jawaban:


14

Ini seharusnya bekerja:

find Linux/MinGW/Cygwin -name '*.c' -o -name '*.cpp' -o -name '*.h'


1

Saya akan menggunakan:

find . -regex '.*\.\(c\|cpp\|h\)$' -print

1
Di macbook saya, skrip tanpa a -Etidak dapat menemukan apa pun. Anda mungkin perlu menambahkan -E (diperpanjang) untuk membuatnya lebih portabel, sama seperti find -E . -regex '.*\.(c|h|cpp)' -print. ;-)
pambda

1

Cepat dan kotor, dan menghindari nama direktori:

find . -type f -name *.[c\|h]

2
Ada tiga masalah dengan perintah ini: 1. Tidak akan menemukan *.cppfile. 2. Ini akan menemukan *.|file. 3. Glob akan berkembang jika ada file yang cocok di direktori saat ini. Mengutip mencegah hal itu.
Dennis


0

Saya menggunakan mac pro yang juga berfungsi di bash. Tetapi setiap kali saya mengetikkan baris perintah:

find -name

dikatakan opsi ilegal. Jadi saya hanya menyederhanakannya sebagai:

find *.c *.cpp *.h

dan ternyata itu benar-benar berfungsi!

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.