rmコマンドを使用してすべての.swpファイルを削除する

rmコマンドを使用してすべての.swpファイルを削除する

.swp現在のディレクトリ内のすべてのファイルを見つけて削除しようとしています。次のコマンドを使用しています。

rm -i `find . | grep .swp$`

ただし、毎回次のエラーが発生します。

rm: missing operand
Try `rm --help' for more information.

私は何が間違っていましたか?

答え1

表示されるエラーメッセージは、名前パターンと一致するファイルがないことを示すことがあります.swp$。作成した内容を実行する通常より安全な方法(すべてのファイル名を処理するため):

find . -name '*.swp' -print0 | xargs -0 rm -i --

上記のコードスニペットでは、null文字を含むレコードを区別するために-print0これを使用しましたfind。デフォルトは残念ながら、ファイル名では機能しない改行文字です。を使用すると、-print0このコマンドは、改行を含むファイル名を含むすべてのファイル名で機能します。同様にxargs -0、その入力はヌルで区切られたレコードとして扱われます。

答え2

または単独で使用されるバリアントですfind。たとえば、次のようになります。

find . -name "*.swp" -ok rm {} +

または確認していない場合もあります(警告!)。

find . -name "*.swp" -delete

答え3

作業を完了するには、常に最も簡単なツールを使用してください。現在のディレクトリでのみ作業しようとしているので、次のコマンドは正しく機能します。

rm -i *.swp

答え4

.swp場合によっては、スワップファイルに拡張子以上の機能がある場合があります。saw、、、などswbの拡張子を持つこともできます。swp

sushil@batpod:/app/DDB# ls -a
.gui.py.swo
gui.py
.serializers.py.swp
serializers.py
.tcinfo.py.swm
tcinfo.py
.views.py.swb
views.py

など...

ほとんどすべての拡張子を持つスワップファイルを削除できるコマンドを作成しました。sw*

注文する:

find . -name '*.sw\*' | xargs -i rm {}

ノート:上記のコマンドを実行する前に、まずそのコマンドで削除するファイルを見て、

find . -name '*.sw\*'

重要なファイルを削除しないでください。

関連情報