タグ

tipsとxargsに関するa2ikmのブックマーク (2)

  • find で空白を含んだパスに検索を実行し、結果を xargs に渡す - 酔いどれコード

    find で空白を含んだパスに対して検索を実行し、その結果を xargs に渡しても思うような結果が得られない。どうしてかというと、xargs は標準入力から空白または改行で区切られた文字列群を読み込むから。パスに含まれた空白が xargs に区切り文字として解釈されてしまう。 % ls "Foo Bar" hoge1.txt hoge2.txt % find "Foo Bar" -name "*.txt" | xargs grep "Hello" grep: Foo: No such file or directory # "Foo" で一つ目の入力として捉えられている grep: Bar/hoge1.txt: No such file or directory # "Bar/hoge1.txt" で二つ目の入力として捉えられている grep: Foo: No such file or

    find で空白を含んだパスに検索を実行し、結果を xargs に渡す - 酔いどれコード
  • xargs を使ってカジュアルに並列処理 - たごもりすメモ

    シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて

    xargs を使ってカジュアルに並列処理 - たごもりすメモ
  • 1