{"id":20032591,"url":"https://github.com/akicho8/dougubako","last_synced_at":"2026-01-02T23:56:06.174Z","repository":{"id":142001525,"uuid":"2543728","full_name":"akicho8/dougubako","owner":"akicho8","description":"テキスト検索置換・ファイル名置換・ファイル検索等々の自分用ツール集","archived":false,"fork":false,"pushed_at":"2024-09-05T09:58:22.000Z","size":155,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-17T08:21:32.439Z","etag":null,"topics":["developer-tools","rename","renumber-files","replace-text","replacer","search-in-text","tools","utilities"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akicho8.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2011-10-09T18:06:18.000Z","updated_at":"2024-09-05T09:58:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"e252fd58-f71d-4de8-a4c5-e19c3bd9d8a6","html_url":"https://github.com/akicho8/dougubako","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/akicho8/dougubako","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akicho8%2Fdougubako","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akicho8%2Fdougubako/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akicho8%2Fdougubako/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akicho8%2Fdougubako/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akicho8","download_url":"https://codeload.github.com/akicho8/dougubako/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akicho8%2Fdougubako/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276064222,"owners_count":25578997,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-20T02:00:10.207Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["developer-tools","rename","renumber-files","replace-text","replacer","search-in-text","tools","utilities"],"created_at":"2024-11-13T09:38:23.757Z","updated_at":"2025-09-20T07:31:49.929Z","avatar_url":"https://github.com/akicho8.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"コマンドライン用便利ツール集\n============================\n\nテキストファイル置換\n--------------------\n\n    $ r --help\n    テキストファイル置換 r 2.0.5\n    使い方: r [オプション] \u003c置換前\u003e \u003c置換後\u003e \u003cファイル or ディレクトリ\u003e...\n    オプション:\n        -x, --exec                       本当に置換する\n        -w, --word-regexp                単語とみなす(false)\n        -s, --simple                     置換前の文字列を普通のテキストと見なす(false)\n        -A                               置換前の文字列のみ普通のテキストと見なす(false)\n        -B                               置換後の文字列のみ普通のテキストと見なす(false)\n        -i, --ignore-case                大小文字を区別しない(false)\n        -u, --[no-]utf8                  半角カナを全角カナに統一して置換(false)\n    レアオプション:\n        -g, --guess                      文字コードをNKF.guessで判断する(false)\n            --[no-]sjis                  文字コードをすべてsjisとする(false)\n            --head=N                     先頭のn行のみが対象\n            --limit=N                    N個置換したら打ち切る\n        -d, --debug                      デバッグ用\n            --help                       このヘルプを表示する\n    実行例:\n      例1. alice → bob\n        $ r alice bob\n      例2. alice → bob (単語として)\n        $ r -w alice bob\n      例3. func1 → func(1)\n        $ r -w \"func(\\d+)\" 'func(#{$1})'\n      例5. func(1, 2) → func(2, 1) (引数の入れ替え)\n        $ r \"func\\((.*?),(.*?)\\)\" 'func(#{$2},#{$1})'\n      例6. func(FooBar) → func(:foo_bar) (引数の定数をアンダースコア表記のシンボルに変換)\n        $ r --activesupport \"func\\((\\w+)\\)\" \"func(:#{\\$1.underscore})\"\n      例7. 行末スペース削除\n        $ r \"\\s+$\" \"\\n\"\n      例8. シングルクォーテーション → ダブルクォーテーション\n        $ r \"'\" \"\\\\\"\"\n      例9. 半角カナも含めて全角カナにするには？\n        $ r --utf8 カナ かな\n      例10. jQuery UIのテーマのCSSの中の url(images/xxx.png) を url(\u003c%= asset_path(\"themes/(テーマ名)/images/xxx.png\") %\u003e) に置換するには？\n        $ r \"\\burl\\(images/(\\S+?)\\)\" 'url(\u003c%= asset_path(\\\"themes/#{f.to_s.scan(/themes\\/(\\S+?)\\//).flatten.first}/images/#{m[1]}\\\") %\u003e)'\n      例11. test-unit から rspec への簡易変換\n        $ r \"class Test(.*) \u003c Test::Unit::TestCase\" 'describe #{$1} do'\n        $ r \"def test_(\\S+)\" 'it \\\"#{$1}\\\" do'\n        $ r \"assert_equal\\((.*?), (.*?)\\)\" '#{$2}.should == #{$1}'\n      例12. 1.8形式の require_relative 相当を 1.9 の require_relative に変換\n        $ r \"require File.expand_path\\(File.join\\(File.dirname\\(__FILE__\\), \\\"(.*)\\\"\\)\\)\" \"require_relative '#{\\$1}'\"\n\n文字列検索\n----------\n\n    $ g --help\n    文字列検索 g 2.0.3\n    使い方: g [オプション] \u003c検索文字列\u003e \u003cファイル or ディレクトリ\u003e...\n    オプション\n        -i, --ignore-case                大小文字を区別しない(false)\n        -w, --word-regexp                単語とみなす(false)\n        -s                               検索文字列をエスケープ(false)\n        -a                               コメント行も含める(false)\n        -u, --[no-]utf8                  半角カナを全角カナに統一(false)\n        -d, --debug                      デバッグモード\n            --help                       このヘルプを表示する\n\n\nファイル整形\n------------\n\n    $ safefile --help\n    ファイル整形 safefile 1.0.0\n    使い方: safefile [オプション] ディレクトリ or ファイル...\n    オプション:\n        -x, --exec                       本当に置換する\n        -r, --recursive                  サブディレクトリも対象にする(デフォルト:false)\n        -s, --[no-]rstrip                rstripする(true)\n        -b, --[no-]delete-blank-lines    2行以上の空行を1行にする(true)\n        -z, --[no-]hankaku               「ａ-ｚＡ-Ｚ０-９（）／＊」を半角にする(true)\n        -Z, --[no-]hankaku-space         全角スペースを半角スペースにする(true)\n        -d, --[no-]diff                  diffの表示(false)\n        -u, --[no-]uniq                  同じ行が続く場合は一行にする(false)\n        -w, --windows                    SHIFT-JISで改行も CR + LF にする(false)\n        -f, --force                      強制置換する\n    使用例:\n        1. カレントディレクトリのすべてのファイルを整形する\n          $ safefile .\n        2. サブディレクトリを含め、diffで整形結果を確認する\n          $ safefile -rd .\n        3. カレントの *.bat のファイルをWindows用に置換する\n          $ safefile -w *.bat\n\n## サブディレクトリを含めて置換してdiffを表示する例\n\n    $ safefile -rd .\n    .U a/b/file2.txt (1 diffs)\n    -------------------------------------------------------------------------------- [1/1]\n    a/b/file2.txt:1: - キン肉マン　マッスルタッグマッチ\n    a/b/file2.txt:1: + キン肉マン マッスルタッグマッチ\n    --------------------------------------------------------------------------------\n    U a/file1.txt (2 diffs)\n    -------------------------------------------------------------------------------- [1/2]\n    a/file1.txt:1: - バトルシティー \n    a/file1.txt:1: + バトルシティー\n    -------------------------------------------------------------------------------- [2/2]\n    a/file1.txt:2: - ルート１６ターボ\n    a/file1.txt:2: + ルート16ターボ\n    --------------------------------------------------------------------------------\n    2 個のファイルの中から 2 個を置換しました。総diffは 3 行です。\n    本当に置換するには -x オプションを付けてください。\n\n## 連続する同じ内容の行を削除する例\n\n    $ cat test.txt\n    a\n    a\n    b\n    a\n    a\n\n    $ safefile -ux test.txt\n    U test.txt (2 diffs)\n    1 個のファイルの中から 1 個を置換しました。総diffは 2 行です。\n    \n    $ cat test.txt\n    a\n    b\n    a\n\nファイル名リナンバー\n--------------------------------------\n\n    $ saferenum --help\n    ファイル名リナンバー saferenum 1.1.0\n    使い方: saferenum [オプション] 対象ディレクトリ...\n    オプション:\n        -x, --exec                       実際に実行する(デフォルト:false)\n        -r, --recursive                  サブディレクトリも対象にする(デフォルト:false)\n        -a, --all                        すべてのファイルを対象にする？(デフォルト:false)\n        -c, --reject-basename            ベースネームを捨てる？(デフォルト:false)\n        -b, --base=INTEGER               インデックスの最初(デフォルト:100)\n        -s, --step=INTEGER               インデックスのステップ(デフォルト:10)\n        -z, --zero=INTEGER               先頭に入れる0の数(デフォルト:1)\n        -n, --number-only                ゼロパディングせず番号のみにする(デフォルト:false)\n        -v, --verbose                    詳細表示(デフォルト:false)\n        -h, --help                       このヘルプを表示する\n    サンプル:\n        例1. カレントディレクトリの《番号_名前.拡張子》形式のファイルを同じ形式でリナンバーする\n            % saferenum .\n        例2. 指定ディレクトリ以下のすべてのファイルを《番号.拡張子》形式にリネームする\n            % saferenum -rac ~/Pictures/Archives\n\n## BASIC の RENUM コマンドのようにファイル名をリナンバーする例\n\n    ~/.emacs.d $ saferenum .\n    [DIR] /Users/alice/.emacs.d (101 files)\n      U [  8/101] 00161_rubikichi.el =\u003e 00170_rubikichi.el\n      U [  9/101] 00165_etc.el =\u003e 00180_etc.el\n      U [ 10/101] 00170_find_file_direct.el =\u003e 00190_find_file_direct.el\n    (snip)\n    差分:94 ディレクトリ数:94 ファイル数:101 個を処理しました。\n    本当に実行するには -x オプションを付けてください。\n\n    ※上記の結果から問題がなければ -x オプションをつけて本当に実行する\n\n    ~/.emacs.d $ saferenum . -x\n    [DIR] /Users/alice/.emacs.d (101 files)\n      U [  8/101] 00161_rubikichi.el =\u003e 00170_rubikichi.el\n      U [  9/101] 00165_etc.el =\u003e 00180_etc.el\n      U [ 10/101] 00170_find_file_direct.el =\u003e 00190_find_file_direct.el\n    (snip)\n    差分:94 ディレクトリ数:94 ファイル数:101 個を処理しました。\n\n## 階層ディレクトリをすべて対象にする\n\n    ※ --all ですべてのファイルを対象にして --reject-basename で元のファイル名をカットする\n\n    $ saferenum --recursive --all --reject-basename ~/Pictures\n    [DIR] /Users/alice/Pictures/Archives/深海魚 (20 files)\n      U [ 1/20] a.jpg =\u003e 0100.jpg\n      U [ 2/20] b.jpg =\u003e 0110.jpg\n    [DIR] /Users/alice/Pictures/Archives/初音ミク (30 files)\n      U [ 1/30] c.jpg =\u003e 0100.jpg\n      U [ 2/30] d.jpg =\u003e 0110.jpg\n    差分:4 ディレクトリ数:4 ファイル数:4 個を処理しました。\n    本当に実行するには -x オプションを付けてください。\n\n## 1からはじまる数値のみの連番にするには？\n\n    --base から --step ごとにインクリメント\n    --number-only で 0 のプレフィクスをつけない\n\n    $ saferenum --recursive --all --number-only --base=1 --step=1 images\n    [DIR] images/a (20 files)\n      U [ 1/20] a.jpg =\u003e 1.jpg\n      U [ 2/20] c.jpg =\u003e 2.jpg\n    [DIR] images/b (30 files)\n      U [ 1/30] 3.jpg =\u003e 1.jpg\n      U [ 2/30] 5.jpg =\u003e 2.jpg\n    差分:4 ディレクトリ数:4 ファイル数:4 個を処理しました。\n    本当に実行するには -x オプションを付けてください。\n\n## cronに仕掛けておくことで画像ディレクトリを自動整理\n\n    0 6 * * * saferenum -racx ~/Pictures/Archives | nkf -j\n\n    [DIR] /Users/alice/Pictures/Archives/壁紙 (20 files)\n    U [ 1/20] 010b9417.jpg =\u003e 0100.jpg\n    U [ 2/20] 02827811.jpg =\u003e 0110.jpg\n    U [ 3/20] 0e21bff0.jpg =\u003e 0120.jpg\n    U [ 4/20] 102264ad.jpg =\u003e 0130.jpg\n    U [ 5/20] 116fbe08.jpg =\u003e 0140.jpg\n    U [ 6/20] 12636f63.jpg =\u003e 0150.jpg\n    U [ 7/20] 143c9d2d.jpg =\u003e 0160.jpg\n    U [ 8/20] 165c586f.jpg =\u003e 0170.jpg\n    U [ 9/20] 1758ec7f.jpg =\u003e 0180.jpg\n    U [10/20] 19a9b86e.jpg =\u003e 0190.jpg\n    U [11/20] 24942625.jpg =\u003e 0200.jpg\n    U [12/20] 27061b37.jpg =\u003e 0210.jpg\n    U [13/20] 2a24bc45.jpg =\u003e 0220.jpg\n    U [14/20] 2ac04638.jpg =\u003e 0230.jpg\n    U [15/20] 30111072.jpg =\u003e 0240.jpg\n    U [16/20] 31bc63a8.jpg =\u003e 0250.jpg\n    U [17/20] 3bca8b86.jpg =\u003e 0260.jpg\n    U [18/20] 3e9b6c4e.jpg =\u003e 0270.jpg\n    U [19/20] 3ebf5a47.jpg =\u003e 0280.jpg\n    U [20/20] 3f746de3.jpg =\u003e 0290.jpg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakicho8%2Fdougubako","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakicho8%2Fdougubako","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakicho8%2Fdougubako/lists"}