タグ

xargsに関するfumikonyのブックマーク (8)

  • xargsにbashのfunctionを渡す方法 - (wrist blog)

    あっさりできるかと思ったら意外に時間が掛かってしまったので纏めておく。 ポイントは2点で、 export -f 関数名 しておく xargsではbash -c "コマンド" を実行する で行けた。 例 パスにそのbasenameした結果をTAB区切りで連結しただけの文字列をechoする関数を定義する。 $ function echo_with_basename(){ > echo -e "$1\t`basename $1`" # -eオプションが無いと\tがTABに変換されない > }この関数を次のようにファイルリストを出力した結果をパイプで繋ぎxargsに渡す。 $ cat filelist.txt /home/wrist/data/A00000.txt /home/wrist/data/A00001.txt /home/wrist/data/A00002.txt /home/wrist

    xargsにbashのfunctionを渡す方法 - (wrist blog)
  • 並列実行はxargsコマンドのマルチプロセスを使うと楽ちん高速化ですね。 - それマグで!

    ruby で同時処理のスレッド制御 でスレッド制御しながら、キューを使わずコマンドを並列実行してきた。 よく考えたら、こんな車輪の再発明などしなくても先人の知恵を借りたほうが楽そう。 調べてみたらxargsに同時実行のオプションがあるのを確認した。 max-procsのこのオプションを知って、せっかく覚えたての find -exec 投げ捨てたくなった xargs 最強じゃないですか。 xargs にコマンドを並列実行する方法がある。 -P/ --max-procs オプション --max-procs=max-procs -P max-procs Run  up  to max-procs processes at a time; the default is 1.  If max-procs is 0, xargs will run as many processes as possib

    並列実行はxargsコマンドのマルチプロセスを使うと楽ちん高速化ですね。 - それマグで!
  • xargs を使ってカジュアルに並列処理 - たごもりすメモ

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

    xargs を使ってカジュアルに並列処理 - たごもりすメモ
  • xargsコマンドの中(引渡し先コマンド)でパイプを使うには - 山歩きプログラマー

    ずっと自分の中でやり方が謎だったがようやく解決。 xargsがデータを引き渡すコマンドの中で処理ごとに随時パイプを使いたいが、普通に使うとxargsが全部処理を終了してからパイプに引き渡される。 そこで登場するのがksh。 ls | xargs -i ksh -c 'grep {} data_file | wc -l' こんな感じで使えば毎処理ごとにパイプに渡される。

    xargsコマンドの中(引渡し先コマンド)でパイプを使うには - 山歩きプログラマー
    fumikony
    fumikony 2015/12/29
    なるほど
  • xargsからのcURL

    1200くらいのURLのリストを渡され、そのURLのファイルをダウンロードする必要があった。今更ダウンローダーをダウンロードしてきて、インストールして、使って、アンインストールするのも面倒だったので、xargsからcURLをつなげてやった。 $ xargs -n 1 -P 4 curl -OL < urllist.txt xargsは、-n 1で標準入力を一行ずつの処理でき、-P 4で指定したコマンドを4つ並行に走らせることができる。cURLでは-Oを使ってURLから保存するファイル名を取り、-Lでリダイレクトを辿るようにする。これで4つ並行にファイルをダウンロードできた。 xargsはもちろん、cURL程になっても使い方を覚えてなくても--helpでなんとなくわかる。こういう--helpやGoogleで使い方や利用例がわかるCLIツールは、ほとんど何も覚える必要がない(どういう目的のツー

    xargsからのcURL
  • ssh, find, xargs, tarで本番環境ぶっ壊した

    2022 (2) ► 10月 (1) ► 2月 (1) ► 2021 (51) ► 11月 (2) ► 10月 (2) ► 9月 (4) ► 8月 (4) ► 7月 (4) ► 6月 (4) ► 5月 (3) ► 4月 (10) ► 3月 (7) ► 2月 (4) ► 1月 (7) ► 2020 (155) ► 12月 (7) ► 11月 (10) ► 10月 (8) ► 9月 (8) ► 8月 (11) ► 7月 (21) ► 6月 (19) ► 5月 (14) ► 4月 (20) ► 3月 (13) ► 2月 (10) ► 1月 (14) ► 2019 (293) ► 12月 (11) ► 11月 (12) ► 10月 (24) ► 9月 (29) ► 8月 (27) ► 7月 (36) ► 6月 (40) ► 5月 (24) ► 4月 (35) ► 3月 (42) ► 2月 (6

  • GNU版, BSD版 xargsの挙動の違い - Shohei Yoshida's Diary

    細いところを見ていくと膨大な違いがあるんでしょうけど, ハマりやすそうなところだけ. GNU版は Linuxディストリビューションにインストールされているもので, BSD版は MacOSX, 各種 BSDディストリビューションにインストールされて いるものとしています. 入力に非空白文字が含まれない場合の挙動 GNU版は最低 1回はコマンドが実行されますが, BSD版は入力に非空白文字が なければコマンドが実行されません. 例えば以下のコマンドを実行したとき, % perl -wl -e 'print "\n" for 1..100 | xargs ls'GNU版では lsが 1回実行されますが, BSD版では何も出力されません. --no-run-if-empty, -rオプション GNU版 xargsには, --no-run-if-empty(-r)オプションがあり, これを 指定する

    GNU版, BSD版 xargsの挙動の違い - Shohei Yoshida's Diary
  • xargs -P が激しく便利なのでメモ - おともだちティータイム

    xargs の -P オプションを使うとプロセスを複数起動して処理を並列に行なうことが出来る。 例 例えば、 1 万枚の JPEG 画像を全て 800x800 に収まるように効率良くリサイズしたい。 まず私はこのようなコマンドを考えた。 convert --geometry 800x800 *.jpg しかし zsh に怒られた。 zsh: argument list too long: convert 引数が全て展開されるためこのような事が起きる。 私は xargs を使って処理することを思い付いた。 ls | xargs -I{} convert --geometry 800x800 {} c_{} 処理は行なわれるが非常に遅い。 しかも CPU を全く使っていないことが分かり、私は処理を並列的に行なう事を考えた。 そこで xargs の -P オプションの出番である。 P の後に並列

    xargs -P が激しく便利なのでメモ - おともだちティータイム
  • 1