タグ

linuxとfindに関するrichard_rawのブックマーク (7)

  • POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき!ShellScriptBashshellPOSIX はじめに find の出力を xargs にパイプで渡すというのはよく見かける使い方ですが、find -print0 | xargs -0 が使えない POSIX 準拠のシェルスクリプトでは find -exec {} + を使った方が良いです。安全かつ十分に速いからです。よく見かける -exec {} ; ではなく -exec {} + ですので間違えないようにしてください。多くのケースでは + の方が優れているのですが ; ばっかり使われているのを見ると、意外と知られてない気がします。 少しだけ予備知識として、-exec {} ; は -exec {} \; と ; をバックスラッシュでエスケープするのがよく見る使い方

    POSIX 準拠のシェルスクリプトでは find | xargs よりも find -exec {} + を使うべき! - Qiita
    richard_raw
    richard_raw 2021/09/14
    私は1999年で知識が止まってました。";"と"+"でそんなにパフォーマンスが違うとは……。というか"-print0"はPOSIX標準じゃなかったのか。/(追記)「;」は単体実行で「+」はグループ実行。
  • xargsコマンドで覚えておきたい使い方・組み合わせ7個(+1個) | 俺的備忘録 〜なんかいろいろ〜

    LinuxやUNIXで、コマンドちょっと組み合わせて利用する際、非常に役に立つxargsコマンド。 今回は、このxargsコマンドで覚えておきたい使い方・組み合わせについて紹介する。 1.基的な使い方 まず、そもそもこのコマンドはどういう使い方をするのか。 基的には、以下のようにパイプでつなぐことで前のコマンド(コマンド1)で取得した値(標準出力)を利用してxargsで指定した別のコマンド(コマンド2)に引数として渡して実行させる事ができるコマンドだ。 コマンド1 | xargs コマンド2 [root@test-centos7 ~]# find /work -type f /work/test2.txt /work/test.txt /work/aaaaa.txt /work/bbbbb.txt /work/ccccc.txt /work/ddddd.txt /work/sample

    richard_raw
    richard_raw 2015/07/28
    xargsはあまり使いこなせていないので参考になります。でもBSDとGNUだと挙動がちょっと違う……。
  • findのemptyとdeleteが便利 - マツモブログ

    4年前に「findのexecが便利」なんて事を書きましたが・・・。 http://d.hatena.ne.jp/yumatsumo/20070516 成長したのかしてないのかまた感涙もののfindのオプションを発見しました。 今回はemptyとdeleteが便利!というお話です。 きっかけ mod_disk_cacheのhtcachecleanがどうも粛清が緩くてinode溢れに悩んでいた訳です。 もう頼ってられない、自分でやろう!粛清じゃー!という訳で以下の2つのルールでやろうと思ってはまりました。 ・更新日がCacheMaxExpireを超えたファイルは削除 ・空のディレクトリは削除 で、更新日はmtimeでほげほげで良いんですが、rmdirで空ファイル削除しようと思ったんですが中身にファイルが残ってるとステータスがエラーとなってしまい健全性が確認できません。 $ find ./ -t

    findのemptyとdeleteが便利 - マツモブログ
    richard_raw
    richard_raw 2014/10/16
    おお、Macのfindでも空のディレクトリが削除できた!でも消せないディレクトリがあるなーと思ったらいつの間にか.DS_Storeができてました。
  • findコマンドで複数の名前条件を指定 - 日々の報告書

    何となく「codeなにがし」を見ていたところ、findコマンドを利用して複数の拡張しにマッチしたファイル一覧を取得する方法が書いてあった。 codeなにがし::linuxでテキストファイルだけをコピー 質問者は*.c *.cc *.h *.hhなどの拡張子を持つファイルの一覧を取得したいとのことで、このためには次のようにfindを実行すればよいそうな(一部省略)。 $ find . \( -name \*.c -o -name \*.cc -o -name \*.h -o -name \*.hh \) -print 「-name」オプションは検索対象のファイルの名前を指定するオプション。これをORを意味する「-o」オプションで複数つなげることで、複数の拡張子のどれか1つにマッチするファイルを見つけ出すことができる。ちなみに「-o」は「-or」とも書ける。 僕も以前似たようなことをしたことが

    findコマンドで複数の名前条件を指定 - 日々の報告書
    richard_raw
    richard_raw 2014/06/04
    "-o"は何となく覚えてたけど"\("と"\)"でくくるのは失念してました。
  • xargs を使ってカジュアルに並列処理 - たごもりすメモ

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

    xargs を使ってカジュアルに並列処理 - たごもりすメモ
    richard_raw
    richard_raw 2011/05/14
    P, Lオプションを併用して並列処理!職場PCはPen4だけど試してみましょうかね。
  • 【レポート】Linuxでよく使うコマンド50 | エンタープライズ | マイコミジャーナル

    Guides, HowTos and Tips for Technology Geeks - The Geek Stuff UbuntuやFedoraなど人気のある最新のディストリビューションはインストールから利用、アップデートまでよく組まれており、ターミナルが使えなくても問題なく利用できることが多い。しかし、ある程度慣れてきたらGUIを使うよりもCUIを使う方が作業効率がいいことがあることもまた事実。また、サーバとして運用している場合にはCUIで利用するしたり、遠隔ログインしてCUIベースのターミナルで作業することも多い。 50 Most Frequently Used UNIX / Linux Commands (With Examples)において、UNIXやLinuxでよく使われるコマンドが50個紹介されている。ビギナーユーザにはコマンドの参照リストとして、中級者以上のユーザには知

    richard_raw
    richard_raw 2010/11/14
    なんでtarやねん。/Linuxでwhatis使えましたっけ?/原文読めということですね、わかりました。
  • めっちゃ便利やねん find コマンドのオプションまとめ | バシャログ。

    こんにちは nakamura です。そういえば 4/1 から 神奈川県公共的施設における受動喫煙防止条例 が施行されましたね。今のところよく行くお店でそれらしい光景は見掛けませんが、先日行った居酒屋はものの見事に禁煙になっていて心なしか客足もまばらな感じでした。神奈川県の飲はこれから厳しそうですな。 さてさて思わず関西弁になってしまうほど便利な find コマンドを今日はご紹介します。比較的有名なコマンドですが、オプションが相当な数あり正直全てを把握するのは無理かもしれません。ただ、よく使うものだけでも頭に入れておくと何かと便利な優れものなのです。 基的なオプション まずは基的な使い方。 -type ファイルタイプの指定に使用するオプションです。スペシャルファイルや名前付きパイプ等様々な引数がありますが、よく使うのはディレクトリを示す d と通常ファイルを示す f でしょうか。 -n

    めっちゃ便利やねん find コマンドのオプションまとめ | バシャログ。
    richard_raw
    richard_raw 2010/04/10
    BSD版はdaystartがなくてちょっと不便だったような。
  • 1