アカウント名:
パスワード:
タイトルはスクリプトキディ気取りで。プレーンファイルのみとかログとかはばっさり無視する前提で。ええと、 xargs でファイル名に空白文字を含んだをパイプで引き渡すと意図しない挙動になる具体的には1. 誤った解釈でブランク・キャラ直前でぶった切られた名前で処理。2. その際に本来ありえなかった標準エラー出力がべろべろ吐き出される。は避けるべきではないかと。(エラー出力が処理と同期して得られる保証がないので見て切り分けがつらいはず)
-exec rm は、ファイル一個一個ずつrmコマンドを呼び出すので、xargs の方が望ましいでしょう。
で、xargsで空白文字入りのファイル名がいけるようにするのが、find の -0 オプションと、xargs の -0 オプション。findは空白ではなく、\0 区切りで出力し、xargs は \0 区切りで読み込み分割処理します。
#すでに自己ツッコミが入ってますが、\0区切りなのでteeしたらダメですね。
それにしても、find を今回のネタのように使うときは、毎回「 -mtime の + と - って、どっちが新しいほうだっけ?」って悩んでしまいます。man を見ても微妙な感じなで自身が持てないので、毎回まずprintだけして確認してる…あとは、適当にtouchしたファイルを元に-newer したりとか。これは字面から勘違いしようがないし。
findにもxargsにも空白文字入りファイル対策があったとは。ご教示多謝。不明を恥じます。
正直なところ find コマンドをふりかざす時点でリソースをがっつり大食いする前提なのであれこれと見積もりが甘くなるきらいあり。
ログを取るタイミングとしては他に、xargsを実行するときと、rmを実行するときがあって、それぞれ以下の通り:xargs -trm -v後者はお気づきの通り。
ファイル名については、空白が含まれることの他に、可能性は低くてもあり得るのは、ハイフン「-」で始まること。例えば、rm -AFileStartingWithHypenが失敗してしまう。これを防ぐにはrm -- -AFileStartingWithHypenとする、ってことらしいです。
2点ご指摘多謝。とりわけハイフンを含むファイル名の事故ケースは指示通り実行していったん抹消したら影響が軽微でも原状回復が面倒なケースに直結する予感。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
身近な人の偉大さは半減する -- あるアレゲ人
find $DIR -mtime +30 -print -exec rm '{}' \; (スコア:1)
タイトルはスクリプトキディ気取りで。
プレーンファイルのみとかログとかはばっさり無視する前提で。
ええと、 xargs でファイル名に空白文字を含んだをパイプで引き渡すと
意図しない挙動になる
具体的には
1. 誤った解釈でブランク・キャラ直前でぶった切られた名前で処理。
2. その際に本来ありえなかった標準エラー出力がべろべろ吐き出される。
は避けるべきではないかと。
(エラー出力が処理と同期して得られる保証がないので見て切り分けがつらいはず)
Re: (スコア:1)
-exec rm は、ファイル一個一個ずつrmコマンドを呼び出すので、xargs の方が望ましいでしょう。
で、xargsで空白文字入りのファイル名がいけるようにするのが、find の -0 オプションと、xargs の -0 オプション。
findは空白ではなく、\0 区切りで出力し、xargs は \0 区切りで読み込み分割処理します。
#すでに自己ツッコミが入ってますが、\0区切りなのでteeしたらダメですね。
それにしても、find を今回のネタのように使うときは、毎回「 -mtime の + と - って、どっちが新しいほうだっけ?」って悩んでしまいます。man を見ても微妙な感じなで自身が持てないので、毎回まずprintだけして確認してる…
あとは、適当にtouchしたファイルを元に-newer したりとか。これは字面から勘違いしようがないし。
Re: (スコア:1)
findにもxargsにも空白文字入りファイル対策があったとは。
ご教示多謝。不明を恥じます。
正直なところ find コマンドをふりかざす時点でリソースを
がっつり大食いする前提なのであれこれと見積もりが甘くなるきらいあり。
Re: (スコア:1)
ログを取るタイミングとしては他に、xargsを実行するときと、rmを実行するときがあって、それぞれ以下の通り:
xargs -t
rm -v
後者はお気づきの通り。
ファイル名については、空白が含まれることの他に、可能性は低くてもあり得るのは、ハイフン「-」で始まること。例えば、
rm -AFileStartingWithHypen
が失敗してしまう。
これを防ぐには
rm -- -AFileStartingWithHypen
とする、ってことらしいです。
Re:find $DIR -mtime +30 -print -exec rm '{}' \; (スコア:1)
2点ご指摘多謝。
とりわけハイフンを含むファイル名の事故ケースは指示通り実行して
いったん抹消したら影響が軽微でも原状回復が面倒なケースに直結する予感。