2009-08-06 10 views
1

ファイル名の末尾に~が含まれている特定のディレクトリ(またはそのサブディレクトリ)にファイルが存在するかどうかを確認するのに、どのコマンドをLinuxで使用できますか?すべての〜ファイルを削除するLinuxコマンド

例えば、多くのサブディレクトリなどがあるtというディレクトリにある場合、私は~で終わるすべてのファイルを削除したいと思います。

+1

を見つける*〜私の作品 –

+3

それは* @Shadow、仕事に*見えるかもしれませんが、私はそれはあなたのためだと思いますそれは間違っています:-) x-ファイルを持つディレクトリでそのコマンドを実行すると、* shell *はxmに展開されてからrmが見えるようになります。つまり、サブディレクトリは実行されません。また、現在のディレクトリにVIMバックアップファイルがない場合、シェルは不平を言います。 – paxdiablo

答えて

1

あなたは、find、grepを、RMの組み合わせ、

のようなものを使用して見つけることができます| grep "〜" |おそらく

-f xargsのrmを他の人がより良いアイデアを持っている:)

+0

これは〜bなども削除します – njsf

2
find ./ -name '*~' -print0 | xargs -0 rm -f 

ここfindは「*〜」グロブに一致するファイル名のフィルタリング、ディレクトリ./およびすべてのサブディレクトリを検索し、(それらを印刷しますproper quoting courtesy of alberge)。結果はxargsに渡され、rm -fに追加され、結果の文字列はシェルで実行されます。複数のパスを使用することができ、利用可能な他の多くのフィルタがあります(ちょうどman findを読んでください)。

9

名前にスペースを入れてください。 GNUと

find ./ -name "*~" -type f -print0 | xargs -0 rm 
+0

'-type f'はい。それは最高ですが、rm -fはとにかくそれを静かにスキップします。 – dmckee

+0

-print0 |とは何ですか? xargs -0平均? とタイプ-fはどこに行くべきですか? – Kys

+0

print0、xargsに-0を指定する場合は、NULLを使用してストリーム内の各ファイル名を終了します。これらの2つがなければ、ファイル "a b c.txt"は "a"、 "b"、 "c.txt"の3つのファイルとして扱われます。そして私は-type fを入れてupvotedしました。これは今より良い答えです:-) – paxdiablo

8

のrm -r

find /path -type f -name "*~" -exec rm {} + 

または

find /path -type f -name "*~" -delete 
+1

+1、これらのソリューションはどちらも、削除される各ファイルの新しいプロセスをフォークしません。非常に多くのファイルを削除する場合、コマンドラインの長さ制限の問題に遭遇することは決してないので、2番目の方法はやや優れています。 –

関連する問題