rm -fの代替

rm -fの代替

コマンドラインを実行したいです。

cd ~/www/tmp/; rm -P 2*

ただし、2で始まるファイルがない場合は、エラーメッセージが表示されます。

ただし、以下を使用したいと思うかもしれません-f

-f      Attempt to remove the files without prompting for confirmation, regardless of the file's permissions.  If the file does not exist, do not display a diagnostic message or modify the exit status to reflect an error.

そして私するファイル権限に注意してください。奇妙なことが起こった場合は、中断するコマンドを好みます。私は「存在しない」エラーを抑制したいだけです。

「rmエラー」に関する他の質問を調べたところ、これら2つが(やや)関連していることがわかりました。

ファイルとディレクトリを名前で削除します。そのファイルやディレクトリはありません。

ところで、この質問への回答が何の内容なのか理解できず、必要なのかわかりませんね。

touchこの質問で提案されたハッキン​​グ:

ファイルが失われた場合、rmは報告しませんか?

性能低下に気にしないので効果があるようです。 (しかし、どのようなパフォーマンスの低下を受け入れますか? - つまり、これはかなりスケーラブルな技術ですか、それとも非常に悪い習慣を学んでいますか?)

if-thenコマンドラインでこれを行う方法がわかりません。

簡単なコマンドラインを切り取り - 貼り付けを整理するための別のオプションはありますか?

find -delete私の状況に適していますか?では、なぜそうなのでしょうか?


問題のあるエラー:

rm: 2*: No such file or directory

答え1

ただrm -P控訴するために既存のディレクトリのパターンと名前が一致する一般的なファイル(ただし、ディレクトリよりも低くない):

find directory -maxdepth 1 -type f -name 'pattern' -exec rm -P {} +

例えば、

find ~/www/tmp/ -maxdepth 1 -type f -name '2*' -exec rm -P {} +

ディレクトリ以外の項目のみを一致させるには、代わりに! -type dを使用します-type f。違いは、この方法が! -type dより広い範囲のファイルタイプ(シンボルリンク、名前付きパイプ、ソケットなど)で機能することです。

見つかったファイルの特定の基準を求めるメッセージを表示するには、次の手順を実行する必要があります。いいえ-delete代わりに-exec rm動作しますので使用してくださいrm -f

-maxdepth 1サブディレクトリを再帰的に見つけるには、削除してくださいfind

関連情報