.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\*'
重要なファイルを削除しないでください。