クイック再帰削除ショートカット

クイック再帰削除ショートカット

場合によっては、コマンドが完了するのを待たずに大量の一時ファイルを再帰的に削除し、ディレクトリ名をリサイクルしたい場合があります。 (たとえば、バージョン管理作業コピーを削除してチェックアウトしたい場合です。)

頻繁には発生しませんが、これが発生した場合は通常、次のコマンドを使用します。

mv "$oldname" dienow && rm -rf dienow &

もちろん、これに関数やエイリアスを作成できますが、そうでない場合は、上記の内容を短く表現する方法はありますか?

ベストアンサー1

私は2つの別々のコマンドを使用します。

mv "$oldname" dienow
rm -rf dienow

これにより、記録から誤って1行を呼び出すと、単一のコマンドを実行して重大なダメージを与える可能性があります。このmvコマンドは新しいバージョンであっても削除されず、削除することを宣言したものだけが削除されます。"$oldname"rm

幸運なので、単一のコマンドのみを使用する必要がある場合は、関数として作成してください。

mv_then_rm () {
  mv -- "$1" "$1.TO_BE_DELETED" && rm -rf -- "$1.TO_BE_DELETED" &
}

これは、「削除する」ディレクトリがすでに存在しないことを保証する複数の引数バージョンです。

mv_then_rm () {
  local d tmpdir tmpdirs
  tmpdirs=()
  for d; do
    tmpdir=$(mktemp -- "$(dirname -- "$d")/.deleting.XXXXXXXXXX")
    tmpdirs+=$tmpdir
    mv -- "$d" "$tmpdir"
  done
  rm -rf -- "$tmpdirs" &
}

おすすめ記事