「すべてのvimスワップファイルを見つけて確認して削除する」コマンドに何がありますか?

「すべてのvimスワップファイルを見つけて確認して削除する」コマンドに何がありますか?

*.swpすべてのvimスワップファイルを削除し、確認で削除しようとしています。コマンドfindがファイルを見つけましたが、rmオプションNo such file or directoryがあります-i。ファイルパスをハードコードしますrm -i

下記をご覧ください

(doors)hobbes3@hobbes3 ~/Sites $ find mysite mysite_BAK -name *.swp -exec 'rm -i {}' \;
find: rm -i mysite/templates/.base.html.swp: No such file or directory
find: rm -i mysite/templates/doors/orders/.create.html.swp: No such file or directory
find: rm -i mysite/templates/doors/orders/.detail.html.swp: No such file or directory
find: rm -i mysite/templates/doors/orders/.list.html.swp: No such file or directory
(doors)hobbes3@hobbes3 ~/Sites $ rm -i mysite/templates/.base.html.swp 
remove mysite/templates/.base.html.swp? n

私の考えでは、私は間違った選択をしたと思います-exec。どんな提案がありますか?よろしくお願いします!

答え1

エラーの原因は次のとおりです。探す、いいえRM

'rm -i <file>'その理由は、単一のパラメータで作成したからです。これは次のように書き直されます。

find mysite mysite_BAK -name '*.swp' -exec rm -i '{}' \;

したがって、findは "-exec"の後に複数の引数を取り、最初の引数をコマンドとして処理し、残りの引数をコマンド引数として扱います。

答え2

更新された回答:

bashバージョン> 4.0を使用している場合は、非常に単純なglobstar関数を使用できます。

shopt -s globstar
rm -i **/*.swp

これはスペースを含むファイル名にも当てはまります。

このセクションshopt -s globstarでは、bashで再帰一致を有効にします。**身につけて.bashrc永遠に幸せになれます。

前の答え:

私は一般的に簡単なツールを組み合わせて使用​​する方が簡単だと思います。

CDをdirにコピーしてから:

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

覚えやすくなります(パフォーマンスが問題にならない場合)!

警告:ファイル名にスペースが含まれていない場合にのみ、このオプションを使用してください。

答え3

こうすれば私は走ります。

find mysite mysite_BAK -type f -name .\*.sw? -exec rm -i {} ";"

VIM のスワップファイルは .swp でのみ終了しません。 .swpが存在する場合、VIMは.swoを生成し、.swnなどを生成します。また、スワップファイルには、.file1.rb.swpのようにドット(.)が前に付けられます。

確認(-i)なしでVIMスワップファイルを見つけて削除する別の方法:

find some_dir -type f -name .\*.sw? | xargs rm 
find some_dir -type f -name .\*.sw? -exec rm {} ";"
find some_dir -type f -name .\*.sw? -delete  # -delete option does not work in Git Bash

「-type f」が存在しない場合、ディレクトリの削除時にエラーが発生します。また、\inは.\*.sw?複数のプラットフォームと互換性があります。

関連情報