回答:
あなたの質問に直接答えるために、「いいえ-あなたが記述したことをすることはできませんrm
」。
あなたはできる、しかし、あなたがそれを組み合わせるそれを行いますfind
。これを行うことができる多くの方法の1つを次に示します。
# search for everything in this tree, search for the file pattern, pipe to rm
find . | grep <pattern> | xargs rm
たとえば、すべての*〜ファイルを破棄する場合は、次のようにします。
# the $ anchors the grep search to the last character on the line
find . -type f | grep '~'$ | xargs rm
コメントから展開するには*:
# this will handle spaces of funky characters in file names
find -type f -name '*~' -print0 | xargs -0 rm
find | grep | xargs rm
。スペース(または改行)のあるファイルがある場合、これは壊れます(ファイル名とスペースの場所によっては)削除するつもりのないものを削除するかもしれません。find … -print0 | xargs -0 rm
より堅牢になります。ただし、必要なファイルのみを一致させてprint0するには、の述語をgrep
使用できず、使用する必要があることを意味しfind
ます。ウォーレンの2番目の例は、より堅牢find -type f -name '*~' -print0 | xargs -0 rm
です。
Bashを使用し、globstar
set を使用してyes:
rm basedir/**/my*pattern*
一致するファイルをリストするls -1
前rm
に、たとえば最初に試してください。
たとえば、オプションを設定しますshopt -s globstar
。
または、短いfind
バリアント:
find -type f -name 'my*pattern*' -delete
またはGNUの場合find
:
find -type f -name 'my*pattern*' -exec rm {} +
またはfind
、GNU以外の別の代替手段(少し遅い):
find -type f -name 'my*pattern*' -exec rm {} \;
必要に応じてディレクトリも削除するrm
にrm -r
は、上記のコマンドでに変更し、コマンドでのみ一致をスキップ-type f
しfind
ます。
ファイル名と*や?などの一致パターンを組み合わせた「rm -rf」をasuumedしました。など(例えばtodays_log_2009 ????。log)これは現在のDirから始まり、そのパターンを認識しているファイルを再帰的に削除します。