“Find:“ -exec rm -f {} \ ”kullanılırken“ -exec ”ifadesine eksik argüman


12

Bu komutu çalıştırın:

~/shell_temp$ find . -type f -name "IMAG1806.jpg" -exec rm -f {}\

aşağıda çıktı var:

> IMAG1806.jpg

Error:
find: missing argument to `-exec'

geçerli dizinden herhangi bir dosyayı bulmak ve kaldırmak için kesin komut -execnedir?


1
Sadece yapamaz mısın rm "IMAG1806.jpg"? Aynı dizinde, bu yüzden ne dediğini biliyorsun.
TheWanderer

@ Zacharee1 - OP'nin "kuru çalışma" yaptığını varsayar. Sadece bulduktan sonra daha fazla dosya bulursa veya en azından -exec olmadan çalışan ve dosya listesini gözden geçirme durumunda rm ile bir -i kullanmayı ve dosya listesini gözden geçirmeyi düşünürdüm
Panther

1
@ Zacharee1: find komutu, geçerli dizinde bu adla adlandırılan tüm dosyaları ve tüm alt dizinlerini (herhangi bir derinlikte) siler.
Dennis

3
Ya da -exec rmsadece kullanmak yerine -deletedoğrudan kullanın .
Braiam

Yanıtlar:


30

Sen a cevapsız ;sonunda (ve aralarında çok bir boşlukta {}ve ;). Doğru komut:

find . -type f -name "IMAG1806.jpg" -exec rm -f {} \;

;-execyüklemin sonunu belirtir find.

Ayrıca , kabuğun yorumundan kaçmak için \;yani \önünde kullandığımızı unutmayın , aksi takdirde kabuk tüm komutun sonu olarak davranacak ve aynı hatayı atacaktır. Bunun yerine de kullanabilirsiniz .;;;findfind';'\;

\Sonunda kullanıyordunuz , bu, kabuğunuzun PS2(ile gösterilen >) üzerinden giriş almaya devam edeceğini , IMAG1806.jpgtekrar yazdığınızı gösterir , böylece tüm komut şöyle olur:

find . -type f -name "IMAG1806.jpg" -exec rm -f {}IMAG1806.jpg

Bununla hiç bir geçerli komut değil görebileceğiniz gibi IMAG1806.jpgsonunda, hiçbir kapanış -execarasında bir boşluk yüklemi ve olmadan {}ve \;.


1
" ;Sonunda bir cevapsız" Bunun için teşekkürler, ben :yerine yanlışlıkla ;
yazmıştı

7

Basitçe yapabilirsiniz

find . -type f -name 'IMAGE1806.jpg' -delete

Man sayfasından:

Delete files; true if removal succeeded.  If the removal failed,
an  error message is issued.  If -delete fails, find's exit sta‐
tus will be nonzero (when it eventually exits).  Use of  -delete
automatically turns on the -depth option.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.