cari file tanpa ekstensi

43

Katakanlah saya punya:

foo.txt
bar
baz.ooo

Jika saya gunakan ls -1 !(*.*)maka saya akan mendapatkan hanya barpada output. Hebat, sekarang saya ingin memiliki hasil yang sama dengan menemukan - beberapa find -regexyang akan melakukan pekerjaan.

CATATAN:

find -name !(*.*)bukan jawabannya karena !(*.*)masih glob Bash yang TIDAK bisa saya gunakan.

pawel7318
sumber

Jawaban:

64

Anda bisa menggunakan: find . -type f ! -name "*.*" the !meniadakan ekspresi berikut, di sini nama file yang berisi '.'

Anda juga dapat menggunakan -maxdepthopsi untuk mengurangi kedalaman pencarian.

fduff
sumber
1
Saya paling suka jawaban Anda karena saya memiliki beberapa kendala lain untuk nama file dan Anda adalah bukti peluru.
pawel7318
Ini juga bagus ketika ls -1 !(*.*)tidak akan berhasil karena !memberi "Acara tidak ditemukan."
Noumenon
2
@Noumenon lakukan set +Huntuk menyelesaikannya
pawel7318
1
Jika Anda memperlakukan .gitignoresebagai file tanpa ekstensi (seperti Node's path.extname ()), gunakan ! -name "?*.*"sebagai ganti! -name "*.*"
Johnny Wong