GNU/Linux >> Linux の 問題 >  >> Linux

存在しないファイルで失敗するRmオプション?

man rmのページ GNU coreutils 8.12.197-032bbでは、-fについて説明しています。 または--force 「存在しないファイルを無視し、プロンプトを表示しない」というオプション。このオプションがないと、既存のファイルが削除され、プロンプトが表示されず、指定されたファイルのいずれかが存在しなかった場合はゼロ以外の終了コードが返されます。 もしあればファイルを保存したい 指定されたファイルのうち存在しない 。これを行う最も簡単な方法は何ですか?

ユースケースは安全です :存在しないファイルを削除しようとしている場合は、コマンドに無効な期待値(または明白なバグ)があることが原因である可能性があります。たとえば、有名なrm -rf /usr /lib/nvidia-current/xorg/xorg 多くの方法で回避できた可能性がありますが、そのうちの1つはそのようなオプションです(明らかに、ユーザーが/lib/nvidia-current/xorg/xorgを持っていた場合を除きます。 ディレクトリ)、およびもう1つはMoreQuotes™を使用することです。ただし、引用符は必ずしも十分ではありません。たとえば、ssh host '/bin/rm some paths; /bin/bash foo.sh' –セミコロンを忘れたり、コロンやコンマなどの他の記号を挿入したりした場合は、/bin/bashを削除しようとします。 および~/foo.sh

承認された回答:

私はこの種のものを使用します:

mkdir DELETE && mv "some" "paths" DELETE && rm -rf DELETE

シングルパスの場合:

mv /some/path DELETE && rm -rf DELETE

さらに良いことに、rm commandを入力します 別のコマンドライン:mv /some/path DELETE 入力 rm -rf DELETE 入力 。そうすれば、唯一のrm シェル履歴に含めるコマンドは、DELETEというファイルにあります したがって、古いバージョンのファイルを削除した場合でも、誤って Upを押して新しいバージョンを削除するリスクはありません。 間違った回数、 Enter

少し自動化したい場合:

mv_to_DELETE () {
  mkdir DELETE &&
  mv -- "[email protected]" DELETE/
}
mv_to_DELETE "some" "paths"
rm -rf DELETE

Linux
  1. ダウンロードしたWindowsUpdateを削除する

  2. .o ファイルと .a ファイル

  3. すべてのサブディレクトリで一致するファイルを削除します

  1. 大量のファイルをすばやく削除する方法

  2. rsync は送信先のファイルを削除しません

  3. .fuse_hidden* ファイルを削除するには?

  1. Linuxで巨大な(100-200GB)ファイルを削除する方法

  2. 安全にファイルを再帰的に削除します:シュレッダー

  3. logrotate でファイルを削除する