を使用すると、rm -rfi
各ファイルを削除するたびに要求されます。コマンドのリストがある場合、rm -rf
コンピュータに一度だけ確認を要求するにはどうすればよいですか(ディレクトリ自体を削除しようとするとき)。
答え1
いくつかのrm
実装(DragonFly BSD、少なくともFreeBSD、およびGNU)の場合-I
(大文字i)が欲しいものです。
-i
ファイルごとに確認が必要で、-I
3つ以上のファイルまたは繰り返し削除の場合は(大文字i)一度確認が必要です。
答え2
zsh -c 'rm -f -- **/*(^/)'
rm -ri -- *
これは、ディレクトリ()以外の**/
すべてのエントリを再帰的に()削除し、既存のシェルを使用して残りのコンテンツ(ディレクトリ)を対話的に削除します。初期削除にドットファイルを含めるには、次のようにします。*
^/
zsh
zsh -c 'rm -f -- **/*(D^/)'
以下は:
rm -ri -- *
答え3
以下のコードスニペットは一度確認を要求し、ディレクトリ全体を削除します。'path/to/delete'
- ユーザーに回答を表示し
read -p 'question ' answer
、回答を変数に保存するために使用されます。 (末尾のスペースはプロンプトを読みやすくします)'question '
${answer}
'question '
[ ]
文字列恒等演算子と一緒にテスト句を使用して、変数に次のものが含まれていることを=
確認してください。${answer}
'expected answer'
&&
ステップが失敗した場合(例:[Ctrl]+[C]
中断するread
場合、またはテスト句が[ ]
真でない場合)と演算子を使用して停止します。- 書く前に
rm -rf
状況が深刻に間違っている可能性があるシナリオを考えてみましょう。リスクを最大限に抑える方法をブレーンストーミングします。 - 上記の条件がすべて満たされたら、ディレクトリを強制的に削除します。
rm -rf
PATH_TO_DELETE='path/to/delete'
read -p "Delete path '${PATH_TO_DELETE}'? [y/N] " YN && [ "${YN}" = 'y' ] && rm -rf "${PATH_TO_DELETE}"
答え4
試してみてください。おそらくクレイジーな解決策かもしれませんが、とにかく共有したいと思いました!
function rm_ {
[[ -d "$1" ]] && rm -rI "$1" || rm -f "$1"
}
それから何も得られなかっrm_ <directory|file>
たら。を使用すると、ファイルが削除されます。directory
rm: remove all arguments recursively?
このようにファイルを削除すると、ユーザーにメッセージは表示されませんが、ディレクトリを削除するとメッセージが表示されます。
のみ使用している場合は、rm -rI
ユーザーにファイルとディレクトリの確認メッセージが表示されるため、およびを組み合わせて使用rm -f
しましたrm -rI
。