Koşmayı denedim
locate *.orig | xargs rm
ama dedi No such file or directory
Bunu yapmak için yollar gördüm find
ama bulmak mümkün böylece nesnenin tam yolunu döndürür
Koşmayı denedim
locate *.orig | xargs rm
ama dedi No such file or directory
Bunu yapmak için yollar gördüm find
ama bulmak mümkün böylece nesnenin tam yolunu döndürür
Yanıtlar:
Dosya adları boşluk içeriyorsa kullanmanız gerekir
locate -0 $something | xargs -0 rm
Gönderen locate
adam sayfası :
-0
,--null
Her girişi ayrı bir satıra yazmak yerine ASCII NUL karakterini kullanarak çıkıştaki girdileri ayırın. Bu seçenek, GNU xargs (1) öğesinin --null seçeneğiyle birlikte çalışabilirlik için tasarlanmıştır.
veya
locate $something | while read f; do rm "$f"; done
Ayrıca, *.orig
kabuk genişlemesini önlemek için tırnak işareti ile korumalı ve dokunulmamış yeri bulmak için geçmelisiniz.
| while read
Ana dizinim boşluklu dosyalarla dolu olduğu için her zaman kullanıyorum .
*.orig
, kabuk deseni diyelim file1.orig file2.orig ...
, yani locate
tam dizeyi *.orig
olması gerektiği gibi görmez .
tr '\n' '\0'
.
O var xargs
değilxarg
Komut locate *.orig | xargs rm
gerçekten işe yarıyor, ancak olan locate
şey *.orig
, çöp kutusundaki dosyaları bulmaktı ve çöp kutusundaki dosyaları silmeye çalışırken rm
hatayı tükürüyordu No such file or directory
.
locate globbing yapmaz, ama kabuk yapar. Kabuk, * .orig dosyasını geçerli dizinde * .orig ile eşleşen öğeye genişletir.
Sadece kullan
locate .orig
ve eğer bu size ihtiyacınız olanı getirirse
locate .orig | xargs rm
veya belirtildiği gibi enzotib
locate -0 .orig | xargs -0 rm
dosya adlarında Whitespace varsa.
Hile: Tüm yolları tmp dosyasına kaydedin. sonra, Döngü:
#!/bin/bash
locate .orig /tmp/tmp.txt
while read line
do
pth=$line
rm "$pth"
done < /tmp/tmp.txt
rm -rf /tmp/tmp.txt