パスワードを忘れた? アカウント作成
13535240 journal
日記

coolguyの日記: find結果のrm 6

日記 by coolguy

どなたかの日記で見たfind結果のrmの件、
execでrmか、xargsか、はxargsがよいと思うが、
条件※付きで以下でもよさげ。
rm `find結果`
※階層が深かったりfind結果のファイル数が多いときに使えない

そう言えば、引数全体の文字列長とは別に
引数の数にも制限がなかったっけか。

この議論は、coolguy (4034)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
  • by sadakenbot (48311) on 2018年02月26日 8時19分 (#3367457) ホームページ 日記

    ファイル名に空白が含まれている場合もダメ。
    $ touch 'white space'
    $ rm $(find . -type f)
    rm: './white' を削除できません: そのようなファイルやディレクトリはありません
    rm: 'space' を削除できません: そのようなファイルやディレクトリはありません
    $

    で、-0オプションの出番になる。

    長さの方では正確には、
    $ getconf ARG_MAX
    2097152
    $

    を超える長さのコマンドラインは受け付けない。

    当然だけど、階層が浅くても、ファイル数が膨大な場合はエラーになる。
    もっともそのレベルになると、「ls」すらまともに動かなくなるけど。

    • by shibuya (17159) on 2018年02月26日 11時05分 (#3367521) 日記

      後者のオフトピについてのみ。

      >もっともそのレベルになると、「ls」すら

      今ポピュラーなファイルシステムで扱う場合でも使える手かどうかはさておき
      そういう状況向きのパラメータ変更(魔改造)も存在したりするかも。
      他の要求仕様と背反するかどうかまではケースバイケースだけど。

      オライリーの MH/XMH タコ本だったかそれ以外のMHに関する技術的トピックを
      扱うサイトの記述だったか忘れたがそういうことを志向している場合ならばあり。

      親コメント
    • by coolguy (4034) on 2018年02月26日 23時58分 (#3367881) ホームページ 日記

      もともとのどなたかの日記のコメントでも-0オプションの話は出てましたね。

      記憶曖昧ですがARG_MAXは環境によって値が異なるのが鬱陶しいです。

      大昔、i-nodeもう振れませんエラーをみたような……

      親コメント
      • ARG_MAXが環境によって値が異なるのは仕方ないんじゃないですかね。
        そうでなければ、世の中の一番ショボい環境に合わせるってことになっちゃう。

        環境毎に変わるので、調べる方法が準備されてるわけで…

        inodeとは別に、一つのディレクトリ内に格納できるファイル数の上限があるファイルシステムも。
        ext3で32,000、ext4で64,000、FAT32で65,534などなど。
        NTFSやxfsnなどは制限なし。
        …だけど、どのくらいまでが実用になるか、ってのはinodeとも上とも別の話。

        親コメント
typodupeerror

計算機科学者とは、壊れていないものを修理する人々のことである

読み込み中...