エメラルドをインストール(コンパイル)しました。コマンドmake uninstall
は機能しませんでした(単なるスクリプトであるため、makefileはありません)。そこで、手動でファイルを削除することにしました。しかし、多くのファイルがありました。
いくつか試してみましたが、うまくいきませんでした。そこで私はここに来てアドバイスを求めました。
ls -R | grep blabla*
のコマンドがあります(ファイル名のみを表示します)ls -R | grep bla* | rm
はありますか?「aname」がファイル名の開始部分である場合、現在のディレクトリから:
find -name "aname" -delete
ところで:
grep "bla"* somewhere
grepはすでに部分一致を行っているため、ほとんど常にfalseです。つまり、単にbla、blafasel、およびxyblaを見つける
grep bla somewhere
誤解のため、回答の古い部分を削除しました。
現在のディレクトリから、すべてのファイルでWord 'aname'を検索する場合は、次を使用できます。
find -exec grep "aname" {} ";" -delete
探しているのは、xargs
、find
、およびrm
の組み合わせです。
find
は、条件に一致するすべてのファイルのリストを作成し、stdout
に書き込み(nullで終わる)、xargs
にパイプされます。 xargs
は、nullで終了する文字列を受け取り、rm
への引数として使用します。
find -L /path/to/dir -name "*name*" -print0 |xargs -0 -r rm
ソース: http://linuxcommando.blogspot.com/2007/10/find-xargs-pipe.html
他の回答の中間:rm
プログラムを必要とせずにxargs
を呼び出すことができます。実際、通常、exec
の代わりにfind
にxargs
オプションを使用できます。
ファイルの大きなバッチでrm
をできるだけ少ない回数呼び出すには:
find /path/to/dir -name "*name*" -exec rm {} +
ファイルごとにrm
を1回呼び出すには:
find /path/to/dir -name "*name*" -exec rm {} ";"
コマンドを実行する前にディレクトリに変更するfind
には、より精巧なオプションもあります。