Řešení 1:
Obecně to zjišťuji pomocí -exec
možnost pro find
aby to bylo jednodušší a méně matoucí. Zkuste toto:
find . -name vmware-*.log -exec rm -i {} \;
Vše po -exec
je považován za příkaz, který se má spustit pro každý výsledek až do ;
, který je zde escapován, takže bude předán do find
. {}
je nahrazeno názvem souboru find
se normálně vytiskne.
Jakmile ověříte, že dělá to, co chcete, můžete odstranit -i
.
Řešení 2:
Pokud máte GNU find
můžete použít -delete
možnost:
find . -name "vmware-*.log" -delete
Chcete-li použít xargs
a vyhněte se problému s mezerami v názvech souborů:
find . -name vmware-*.log -print0 | xargs -0 rm
Vaše soubory protokolu by však neměly mít v názvech mezery. Dokumenty pro zpracování textu a soubory MP3 je pravděpodobně obsahují, ale měli byste být schopni ovládat názvy souborů protokolu.
Řešení 3:
Můžete říct find
k vymezení výstupního seznamu hodnotami NULL a xargs
získat jeho seznam vstupů stejný:
$ ls -l "file 1" "file 2"
-rw-r--r-- 1 james james 0 Oct 19 13:28 file 1
-rw-r--r-- 1 james james 0 Oct 19 13:28 file 2
$ find . -name 'file *' -print0 | xargs -0 ls -l
-rw-r--r-- 1 james james 0 Oct 19 13:28 ./file 1
-rw-r--r-- 1 james james 0 Oct 19 13:28 ./file 2
$ find . -name 'file *' -print0 | xargs -0 rm -v
removed `./file 2'
removed `./file 1'
Také se ujistěte, že jste zakódovali *
, buď se zpětným lomítkem, nebo pomocí vmware-*.log
v jednoduchých uvozovkách, jinak se jej váš shell může pokusit rozšířit, než jej předá na find
.
Řešení 4:
Nezapomeňte na -delete
nálezu volba. Odebere soubor bez chyby se speciálními znaky...