Bagaimana saya bisa mencari nama kartu liar di semua subfolder?

26

Bagaimana saya bisa mencari nama kartu liar di semua subfolder? Apa yang akan setara dengan perintah DOS: dir *pattern* /sdi * nix?

Eduard Florinescu
sumber

Jawaban:

40

Anda bisa menggunakannya find. Jika, misalnya, Anda ingin menemukan semua file dan direktori yang ada abcddalam nama file, Anda bisa menjalankan:

find . -name '*abcd*'
Ryan A.
sumber
12

Zsh:

ls -ld -- **/*abcd*

Ksh93:

set -o globstar     # put this line in your ~/.kshrc
ls -ld -- **/*abcd*

Bash ≥4:

shopt -s globstar   # put this line in your ~/.bashrc
ls -ld -- **/*abcd*

Yash:

set -o extendedglob # put this line in your ~/.yashrc
ls -ld -- **/*abcd*

tcsh:

set globstar
ls -ld -- **/*abcd*

ikan:

ls -ld -- **abcd*

(hati-hati beberapa dari kerang itu akan mengikuti symlink ketika turun pohon direktori; beberapa dari mereka yang tidak suka zsh, yashatau tcshharus ***/*abcd*melakukannya).

Portable (kecuali untuk sistem yang sangat lama; OpenBSD butuh waktu lama tetapi akhirnya mendukung exec … +sejak 5.1):

find . -name '*abcd*' -exec ls -ld {} +

Bukan POSIX tetapi berfungsi di * BSD, Linux, Cygwin, BusyBox:

find . -name '*abcd*' -print0 | xargs -0 ls -ld

Perhatikan bahwa kecuali dalam beberapa BSD, jika tidak ada file yang cocok ditemukan, ls -ldakan dijalankan tanpa argumen, demikian juga daftar .. Dengan beberapa xargsimplementasi, Anda dapat menggunakan -ropsi untuk mengatasinya.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
apa yang dilakukan shopt -s globstar ??
capybaralet
@ user2429920 gnu.org/software/bash/manual/… dan klik ke gnu.org/software/bash/manual/bash.html#The-Shopt-Builtin lalu gulir ke bawah ke globstar.
Gilles 'SO- stop being evil'