GNU/Linux >> Belajar Linux >  >> Linux

Mendapatkan Opsi -exec Di Temukan Untuk Bekerja?

Saya mencoba membuat find mencetak daftar direktori yang berisi file selain gambar jpg, tetapi saya pikir saya menggunakan -exec pilihan rusak. Lingkungan saya adalah Cygwin Bash.

$ find ! -iname "*.JPG$" -exec dirname

find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname {}

find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname ;

find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname ;

find: missing argument to `-exec'
$ find ! -iname "*.JPG$" -exec dirname {};

find: missing argument to `-exec'

Jawaban yang Diterima:

Sebuah -exec perlu diakhiri dengan ; atau + . ; menyebabkan perintah dieksekusi sekali per nama file yang ditemukan, sedangkan + menyebabkan perintah dieksekusi sekali untuk semua nama file.

Berikut adalah contoh kerja:

find ! -iname "*.JPG" -exec dirname {} ;

Beberapa perbedaan mencolok dari upaya Anda:

  1. Harus ada spasi di antara {} dan ;
  2. ; harus diloloskan, karena merupakan metakarakter shell.
  3. Seperti yang ditunjukkan @muru dalam jawabannya, -iname mengambil gumpalan, bukan ekspresi reguler

Linux
  1. temukan -exec cmd {} + vs | xargs

  2. temukan:-exec rm {} \; vs. -delete - mengapa yang pertama direkomendasikan secara luas?

  3. Apa sintaks find -exec yang benar

  1. Bagaimana Cara Kerja Sticky Bit?

  2. Bagaimana Internal Sudo Bekerja?

  3. Mendapatkan 256 Warna Untuk Bekerja Di Tmux?

  1. Linux – Mendapatkan Kemampuan Drive Cd/dvd Saat Wodim –devices Tidak Bekerja?

  2. Temukan Komputer Di Jaringan Lan?

  3. temukan -exec fungsi shell di Linux?