Koşmayı denedim
locate *.orig | xargs rm
ama dedi No such file or directory
Bunu yapmak için yollar gördüm findama 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 findama 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 locateadam sayfası :
-0,--nullHer 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, *.origkabuk genişlemesini önlemek için tırnak işareti ile korumalı ve dokunulmamış yeri bulmak için geçmelisiniz.
| while readAna dizinim boşluklu dosyalarla dolu olduğu için her zaman kullanıyorum .
*.orig, kabuk deseni diyelim file1.orig file2.orig ..., yani locatetam dizeyi *.origolması gerektiği gibi görmez .
tr '\n' '\0'.
O var xargsdeğilxarg
Komut locate *.orig | xargs rmgerçekten işe yarıyor, ancak olan locateşey *.orig, çöp kutusundaki dosyaları bulmaktı ve çöp kutusundaki dosyaları silmeye çalışırken rmhatayı 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