Linux上のすべてのサブディレクトリにあるすべての.swpファイルを削除する方法を教えてください。
現在のディレクトリの下にあるすべての* .swpファイルを削除し、次のいずれかの形式でfind
コマンドを使用します。
find . -name \*.swp -type f -delete
-delete
オプションは、findが一致するファイルを直接削除することを意味します。これは、OPの実際の質問に最適なものです。-type f
を使用すると、findはファイルのみを処理します。
find . -name \*.swp -type f -exec rm -f {} \;
find . -name \*.swp -type f -exec rm -f {} +
オプション-exec
はfindがファイルごとに任意のコマンドを実行することを可能にします。最初の方法ではファイルごとに1回コマンドを実行し、2番目の方法では{}
をできるだけ多くのパラメータに置き換えて、できるだけ少ないコマンドで実行します。
find . -name \*.swp -type f -print0 | xargs -0 rm -f
出力をxargs
にパイプすることは、-exec
で可能であるよりも複雑なファイルごとのコマンドから使用されます。オプション-print0
は、改行ではなくASCII NULLとの一致を分離するようにfind
に指示し、-0
は、NULLで区切られた入力を予期するようにxargs
に指示します。これにより、空白を含むファイル名に対してパイプ構造が安全になります。
詳細と例についてはman find
を参照してください。
find . -name '*.swp' -delete
削除することでファイル名に埋め込まれたスペースの危険性が取り除かれます。セキュリティをさらに高めるために、ファイル専用に-type f
を追加することも検討してください。
find /path -type f -name "*.swp" -delete
find /path -type f -name "*.swp" -exec rm -f "{}" +;
バッシュ4.0
shopt -s globstar
rm -f /path/**/*.swp
私のホームディレクトリの下で(そしてGNU 'find'と 'xargs'を使って)検索するには、次のようにします。
find $HOME -name '*.swp' -print0 | xargs -0 rm -f
'-print0
'および '-0
'の使用は、名前がASCII NUL '\ 0'文字で区切られることを意味し、これは名前の中にブランクなどのあるファイルパスを処理します。ディレクトリの下にディレクトリ(またはデバイスファイル、FIFO、その他のファイル以外)が '.swp'で終わっている可能性があると思われる場合は、 '-type f
'オプションを 'find'に追加することができます。ディレクトリしかない場合は、上記のコマンドを実行してもディレクトリの削除に失敗します。