Solaris setara dengan kedalaman / pangkas?

10

Saya mencoba menemukan beberapa file di dalam direktori. Secara default, find commandsedang mencari direktori yang telah saya tentukan dan sub direktori.

Saya mencoba menggunakan depth/maxdepthdan prune, tetapi tidak ada yang membantu mengatasi ini. Adakah yang bisa menunjukkan cara yang tepat untuk menggunakan kedalaman / pemangkasan di Solaris?

Kode saya terlihat seperti ini:

find file_path -depth 1 -name '*.log'

Saya mendapatkan kesalahan berikut:

find: bad option 1
find: [-H | -L] path-list predicate-list
pengguna295338
sumber

Jawaban:

15

Anda mengacaukan dua opsi yang tidak terkait yang memiliki nama yang agak mirip:

  • -depthtidak mengambil argumen. Jika ada, ia memberitahu finduntuk memproses isi direktori sebelum memproses direktori itu sendiri.
  • -maxdepth N (di mana N adalah bilangan bulat) membatasi rekursi ke tingkat subdirektori N.

The -maxdepthpilihan adalah perpanjangan ditemukan dalam beberapa versi find, tapi tidak Solaris. Ada trik untuk menggunakan hanya opsi standar finduntuk memproses direktori tanpa berulang: gunakan -prunepada subdirektori, tetapi kecualikan direktori tingkat atas. Karena satu-satunya cara untuk mencocokkan direktori tingkat atas adalah dengan nama, aturlah namanya menjadi .(yang tidak akan pernah menjadi nama subdirektori).

find /directory/to/traverse/. -name . -o \
                              -type d -prune -o \
                              -name '*.log' -print
Gilles 'SANGAT berhenti menjadi jahat'
sumber
Saya menghadapi masalah ini, dan solusi ini membantu. Saya menghabiskan satu hari berusaha mencari solusi agar ini berhasil. Grrr, Solaris.
Kevin Teljeur
Apakah Anda melihat ada masalah menggunakan sed untuk menghapus /./ find $ {direktori} / sh /. -nama -o -type d -prune -o -print | sed 's /\/\.\//\//'
Ethan Post
@EthanPost Anda bisa melakukan itu, tetapi temukan implementasi tanpa -mindepthdan -maxdepthmerupakan jenis yang menghilang. Jika ditemukan -maxdepth, gunakanfind /directory/to/traverse -mindepth 1 -maxdepth 1 -name '*.log'
Gilles 'SO- stop being evil'
@Gilles Hanya butuh satu untuk menghancurkan Anda ketika Anda sedang membangun kerangka kerja yang mungkin perlu dijalankan dalam keadaan seperti itu! Pasar itu mungkin menjadi roti dan mentega saya suatu hari nanti! Terima kasih untuk bantuannya.
Ethan Post