{"id":1821,"date":"2009-10-15T10:07:38","date_gmt":"2009-10-15T01:07:38","guid":{"rendered":"http:\/\/terzeron.com\/?p=1821"},"modified":"2009-10-15T10:07:38","modified_gmt":"2009-10-15T01:07:38","slug":"perl-%ed%8c%8c%ec%9d%bc-%ec%9d%b4%eb%a6%84-%eb%b0%94%ea%be%b8%eb%8a%94-%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8-%ec%a0%95%ea%b7%9c%ec%8b%9d-%ec%82%ac%ec%9a%a9-%eb%94%94%eb%a0%89%ed%86%a0%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/terzeron.com\/?p=1821","title":{"rendered":"[Perl] \ud30c\uc77c \uc774\ub984 \ubc14\uafb8\ub294 \uc2a4\ud06c\ub9bd\ud2b8 (\uc815\uaddc\uc2dd \uc0ac\uc6a9, \ub514\ub809\ud1a0\ub9ac \uc0ac\uc6a9 \uac00\ub2a5)"},"content":{"rendered":"<p>Perl\uc758 \ucc3d\uc2dc\uc790\uc778 Larry Wall\uc774 Perl \ucc45\uc744 \uc4f0\ub358 \uc2dc\uc808\uc5d0 \uadf8\ub54c\ubd80\ud130 \ucc45\uc5d0 \uc218\ub85d\ub418\uc5b4 \uc788\uc5c8\ub358 <a href=\"http:\/\/people.sc.fsu.edu\/~burkardt\/pl_src\/rename\/rename.perl\">rename \uc2a4\ud06c\ub9bd\ud2b8<\/a>\uac00 \uc788\ub2e4. Perl \ud504\ub85c\uadf8\ub798\uba38\ub77c\uba74 \ub2e4\ub4e4 \uc54c \uc9c0\ub3c4 \ubaa8\ub974\uaca0\ub2e4.<\/p>\n<p>\uc694\uc998 \uc5b4\ub5a4 \ub9ac\ub205\uc2a4 \ubc30\ud3ec\ubcf8\uc5d0\ub294 rename\uc778\uc9c0 rename.pl\uc778\uc9c0 \ud558\ub294 \uc774\ub984\uc758 \uc2a4\ud06c\ub9bd\ud2b8\ub85c \uae30\ubcf8 \uc124\uce58\uac00 \ub418\uae30\ub3c4 \ud558\ub294 \uac83 \uac19\ub2e4. (\uc774\uac74 \ud655\uc2e4\ud558\uc9c0 \uc54a\ub2e4.)<\/p>\n<p>\uc815\uaddc\uc2dd\uc744 \uc774\uc6a9\ud574\uc11c \ud3b8\ud558\uac8c \uc774\ub984 \ubcc0\ud658 \uaddc\uce59\uc744 \uc9c0\uc815\ud560 \uc218 \uc788\ub2e4\ub294 \uac8c \uc7a5\uc810\uc774\ub2e4.<\/p>\n<p>\uc608\ub97c \ub4e4\uba74, .doc \ud655\uc7a5\uc790\ub97c \uac00\uc9c4 \ud30c\uc77c\uc744 .txt\ub85c \ubcc0\ud658\ud55c\ub2e4\uace0 \ud558\uba74, shell\uc5d0\uc11c for loop\ub97c \ub3cc\ub824\uc11c \ub9e4 \ud30c\uc77c\ub9c8\ub2e4 \ud30c\uc77c \uc774\ub984 \ubd80\ubd84\uacfc \ud655\uc7a5\uc790 \ubd80\ubd84\uc744 \ubd84\ub9ac\ud574\uc11c \ud655\uc7a5\uc790 \ubd80\ubd84\ub9cc \ubc14\uafd4\uce58\uae30\ud558\ub294 \uadc0\ucc2e\uc740 \uc791\uc5c5\uc744 \ud574\uc918\uc57c \ud55c\ub2e4. \ud558\uc9c0\ub9cc rename.pl\ub85c \ud558\uba74?<\/p>\n<pre class=\"brush: shell\">rename.pl 's\/\\.doc$\/\\.txt\/' *.doc<\/pre>\n<p>\uc774\ub807\uac8c \ud558\uba74 \ub41c\ub2e4. .doc\ub85c \ub05d\ub098\ub294 \ubb38\uc790\uc5f4\uc774 \uc788\uc73c\uba74 \uadf8 \ubd80\ubd84\uc744 .txt\ub85c \ubc14\uafb8\uaca0\ub2e4\ub294 \uc758\ubbf8\uc774\ub2e4.<\/p>\n<p>\uc774 \uc2a4\ud06c\ub9bd\ud2b8\uc744 \uc544\uc8fc \uc720\uc6a9\ud558\uac8c \uc798 \uc368\uc654\ub294\ub370, \ud30c\uc77c\uc774 \uc0c1\ub2f9\ud788 \ub9ce\uc740 \ub514\ub809\ud1a0\ub9ac\uc5d0\uc11c \uc774 \uc791\uc5c5\uc744 \ud558\uba74 \uba87 \uac00\uc9c0 \ub2e8\uc810\uc774 \ub098\ud0c0\ub09c\ub2e4. \uc77c\ub2e8 *.doc\ucc98\ub7fc \uc5ec\ub7ec \ud30c\uc77c\uc744 \uc9c0\uc815\ud560 \uacbd\uc6b0, shell\uc5d0 \ub530\ub77c argument \uc218\uac00 \ub108\ubb34 \ub9ce\uc544\uc11c \uc2e4\ud589\uc774 \ubd88\uac00\ub2a5\ud55c \uacbd\uc6b0\uac00 \uc788\uace0, \ub610\ud55c Perl\uc778 \uc810\uc744 \uac10\uc548\ud558\ub354\ub77c\ub3c4 \uc18d\ub3c4\uac00 \ub108\ubb34 \ub290\ub9ac\ub2e4. \uadf8\ub798\uc11c \ub514\ub809\ud1a0\ub9ac\uc5d0 \ub300\ud574\uc11c \uc77c\uad04 \ucc98\ub9ac\uac00 \uac00\ub2a5\ud558\ub3c4\ub85d \uc218\uc815\ud574\ubd24\ub2e4.<\/p>\n<pre class=\"brush: perl\">#!\/usr\/bin\/env perl\n#\n# Usage: rename perlexpr [files or directory]\n#\n# updated by terzeron@gmail.com, 2009\/10\/07\n# copied and updated by terzeron@indra.snu.ac.kr, 1997\/09\/20\n\nuse strict;\nuse English;\n\nsub rename_file\n{\nmy $pattern = shift;\nmy $file = shift;\nmy $dir = shift;\n\nmy $old_name = \"$dir\/$file\";\n$_ = $old_name;\neval $pattern;\nmy $new_name = $_;\n#$old_name =~ s\/([\\?\\&amp;\\*])\/\\\\$1\/og;\nprint \"$old_name -&gt; $new_name\\n\";\nif ($old_name ne $new_name) {\nif (not rename($old_name, $new_name)) {\nprint \"can't rename $old_name to $new_name, $ERRNO\\n\";\nreturn -1;\n}\n}\nreturn 0;\n}\n\nsub main\n{\n# If no perlexpr argument exists, exit.\nif (scalar @ARGV &lt; 2) {\nprint STDERR\n\"Usage:\\t$PROGRAM_NAME\\t \\n\";\nreturn -1;\n}\nmy $pattern = shift @ARGV;\n\nif (scalar @ARGV == 1 and -d $ARGV[0]) {\n# directory\nmy $dir;\nif (not opendir($dir, $ARGV[0])) {\nprint STDERR \"can't open directory '$dir' for reading, $ERRNO\\n\";\nreturn -1;\n}\nwhile ((my $file = readdir($dir))) {\nif ($file eq \".\" or $file eq \"..\") {\nnext;\n}\nif (rename_file($pattern, $file, $ARGV[0]) &lt; 0) {\nreturn -1;\n}\n}\nclosedir($dir);\n} else {\n# file list\nforeach my $file (@ARGV) {\nif (rename_file($pattern, $file, \"\") &lt; 0) {\nreturn -1;\n}\n}\n}\n}\n\nmain();<\/pre>\n<p>\uc774\ub807\uac8c \uc4f8 \uc218 \uc788\ub2e4.<\/p>\n<pre class=\"brush: shell\">rename.pl 's\/\\.doc$\/\\.txt\/' \/home\/terzeron\/doc_dir<\/pre>\n<p><del datetime=\"2009-10-16T01:45:48+00:00\">\uc774\ub807\uac8c \uc4f0\uba74 \uc880 \ub354 \ube60\ub974\uac8c \uc2e4\ud589\ub420 \uac83\uc774\ub2e4.<\/p>\n<pre class=\"brush: shell\">rename.pl 's\/\\.doc$\/\\.txt\/o' \/home\/terzeron\/doc_dir<\/pre>\n<p>o modifier\ub294 \uc815\uaddc\uc2dd\uc744 compile\ud558\ub3c4\ub85d \uc9c0\uc815\ud558\ub294 \uac83\uc774\ub2e4. compile\ud574\ub193\uace0 \uc5ec\ub7ec \ud30c\uc77c\uc5d0 \uc801\uc6a9\ud558\uba74 \ube60\ub974\uac8c \ub3d9\uc791\ud55c\ub2e4.<\/del><\/p>\n<div class=\"fb-background-color\">\n\t\t\t  <div \n\t\t\t  \tclass = \"fb-comments\" \n\t\t\t  \tdata-href = \"https:\/\/terzeron.com\/?p=1821\"\n\t\t\t  \tdata-numposts = \"100\"\n\t\t\t  \tdata-lazy = \"true\"\n\t\t\t\tdata-colorscheme = \"light\"\n\t\t\t\tdata-order-by = \"time\"\n\t\t\t\tdata-mobile=true>\n\t\t\t  <\/div><\/div>\n\t\t  <style>\n\t\t    .fb-background-color {\n\t\t\t\tbackground: #ffffff !important;\n\t\t\t}\n\t\t\t.fb_iframe_widget_fluid_desktop iframe {\n\t\t\t    width: 100% !important;\n\t\t\t}\n\t\t  <\/style>\n\t\t  ","protected":false},"excerpt":{"rendered":"<p>Perl\uc758 \ucc3d\uc2dc\uc790\uc778 Larry Wall\uc774 Perl \ucc45\uc744 \uc4f0\ub358 \uc2dc\uc808\uc5d0 \uadf8\ub54c\ubd80\ud130 \ucc45\uc5d0 \uc218\ub85d\ub418\uc5b4 \uc788\uc5c8\ub358 rename \uc2a4\ud06c\ub9bd\ud2b8\uac00 \uc788\ub2e4. Perl \ud504\ub85c\uadf8\ub798\uba38\ub77c\uba74 \ub2e4\ub4e4 \uc54c \uc9c0\ub3c4 \ubaa8\ub974\uaca0\ub2e4. \uc694\uc998 \uc5b4\ub5a4 \ub9ac\ub205\uc2a4 \ubc30\ud3ec\ubcf8\uc5d0\ub294 rename\uc778\uc9c0 rename.pl\uc778\uc9c0 \ud558\ub294 \uc774\ub984\uc758 \uc2a4\ud06c\ub9bd\ud2b8\ub85c \uae30\ubcf8 \uc124\uce58\uac00 \ub418\uae30\ub3c4 \ud558\ub294 \uac83 \uac19\ub2e4. (\uc774\uac74 \ud655\uc2e4\ud558\uc9c0 \uc54a\ub2e4.) \uc815\uaddc\uc2dd\uc744 &hellip; <a href=\"https:\/\/terzeron.com\/?p=1821\">\uacc4\uc18d \uc77d\uae30 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"categories":[13],"tags":[],"class_list":["post-1821","post","type-post","status-publish","format-standard","hentry","category-programming"],"_links":{"self":[{"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/posts\/1821","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/terzeron.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1821"}],"version-history":[{"count":0,"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/posts\/1821\/revisions"}],"wp:attachment":[{"href":"https:\/\/terzeron.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1821"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/terzeron.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1821"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/terzeron.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1821"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}