走ってみた
locate *.orig | xargs rm
しかし、それはNo such file or directory
と言った
私はfind
でそれを行う方法を見てきましたが、locateはオブジェクトへのフルパスを返すので可能です
ファイル名にスペースが含まれている場合は、使用する必要があります
locate -0 $something | xargs -0 rm
locate
manページ から:
-0
、--null
各エントリを個別の行に書き込む代わりに、ASCII NUL文字を使用して出力のエントリを区切ります。このオプションは、GNU xargs(1)の--nullオプションとの相互運用性のために設計されています。
または
locate $something | while read f; do rm "$f"; done
また、*.orig
を引用符で保護して、シェルの展開を回避し、それをそのままの場所に渡す必要があります。
xargs
ではなくxarg
です
コマンドlocate *.orig | xargs rm
は実際に動作しますが、起こっていたのは、locate
がゴミ箱に*.orig
ファイルを見つけていて、rm
がエラーを吐き出すNo such file or directory
ゴミ箱内のファイルを削除します。
locateはグロビングを行いませんが、Shellは行います。シェルは* .origを、現在のディレクトリで* .origに一致するものに展開します。
ただ使う
locate .orig
そして、それがあなたが必要なものを得るなら
locate .orig | xargs rm
または、エンゾチブが述べたように
locate -0 .orig | xargs -0 rm
ファイル名に空白が含まれている場合。
秘::すべてのパスをtmpファイルに保存します。次に、ループします:
#!/bin/bash
locate .orig /tmp/tmp.txt
while read line
do
pth=$line
rm "$pth"
done < /tmp/tmp.txt
rm -rf /tmp/tmp.txt