Bagaimana cara mencari semua subdirektori untuk menemukannya dengan nama tertentu?

13

Katakanlah saya memiliki direktori tingkat atas yang disebut /dirdan banyak direktori. Bagaimana cara mencari subdirektori /diruntuk menemukan yang dipanggil x/x/dir/x/x/x/target?

Pertanyaan ini mirip dengan, tetapi tidak persis apa yang saya cari: temukan perintah untuk subdirektori tertentu .

Saya tidak mencari file, hanya direktori dengan nama tertentu.

bernie2436
sumber

Jawaban:

18

Coba find /dir -type d -name "your_dir_name".

Ganti /dirdengan nama direktori Anda, dan ganti "your_dir_name"dengan nama yang Anda cari.

-type dakan memberitahu finduntuk mencari direktori saja.

Vinz
sumber
1

Untuk solusi yang lebih umum untuk menemukan satu atau lebih direktori dan mencari mereka seperti mencari alamat email lama di repositori git lihat pola berikut:

find . -type d -name .git -print0|\
    xargs -0r -I {} find {} -type f -print0 |\
    xargs -0r grep -e '[email protected]'
Hildred
sumber
1
echo **/target

atau untuk mendapatkan satu kecocokan per baris:

printf %s\\n **/target

Ini berfungsi di luar kotak di zsh. Di bash, Anda harus menjalankan shopt -s globstarterlebih dahulu, dan berhati-hatilah karena ini juga melintasi tautan simbolis ke direktori. Di ksh93, Anda harus menjalankannya set -o globstarterlebih dahulu.

Jika Anda hanya ingin mencocokkan direktori atau tautan simbolik ke direktori, tambahkan trailing /(yaitu **/target/). Di zsh, untuk mencocokkan hanya direktori tetapi bukan tautan simbolik ke direktori, buat itu **/target(/).

Dalam shell apa pun, Anda dapat menggunakan findperintah:

find . -name target

Di Linux dan Cygwin, .ini opsional. Jika Anda hanya ingin mencocokkan direktori, tambahkan -type d.

Gilles 'SANGAT berhenti menjadi jahat'
sumber