Next: , Previous: Single File, Up: Run Commands   [Contents][Index]


3.3.2 Ê£¿ô¤Î¥Õ¥¡¥¤¥ë

°ìÅ٤˰ì¤Ä¤º¤Ä¤Î¥Õ¥¡¥¤¥ë¤ò½èÍý¤¹¤ëɬÍפ¬¤¢¤ë»þ¤â¤¢¤ê¤Þ¤¹¡¥¤·¤«¤·¡¤¤³¤ì ¤ÏÉÔÍפǡ¤¥Õ¥¡¥¤¥ë¤´¤È¤Ë¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤è¤ê¡¤¤Ç¤­¤ë¤À¤±Â¿¤¯¤Î¥Õ¥¡¥¤ ¥ë¤ò¥³¥Þ¥ó¥É¤Ç¼Â¹Ô¤·¤¿Êý¤¬Â®¤¯¤Ê¤ê¤Þ¤¹¡¥¤³¤¦¤¹¤ë¤³¤È¤Ç¡¤¤½¤ì¤¾¤ì¤Î¥³¥Þ ¥ó¥É¤ò³«»Ï¤¹¤ë»þ´Ö¤ò²Ô¤°¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡¥

-execdir’¤È‘-exec’¥¢¥¯¥·¥ç¥ó¤Ë¤Ï¡¤¤Ç¤­¤ë¤À¤±Â¿¤¯¤Î¥Þ¥Ã¥Á¤·¤¿ ¥Õ¥¡¥¤¥ë¤ò´Þ¤à¥³¥Þ¥ó¥É¥é¥¤¥ó¤ò¹½ÃÛ¤¹¤ë°¡¼ï¤¬¤¢¤ê¤Þ¤¹¡¥

Action: -execdir command {} +

¤³¤ì¤Ï‘-execdir command ;’¤ÈƱ¤¸¤è¤¦¤Ëưºî¤·¤Þ¤¹¤¬¡¤¥³¥Þ¥ó¥É¤Î½ª¤ï ¤ê¤Î‘{}’¤Ï¥Þ¥Ã¥Á¤·¤¿¥Õ¥¡¥¤¥ë¤Î̾Á°¤Î¥ê¥¹¥È¤Ë¤Ê¤ê¤Þ¤¹¡¥¤³¤ÎŸ³«¤Ï¡¤ ¥·¥¹¥Æ¥à¤ÇÍøÍѲÄǽ¤Ê¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÎºÇÂç¤ÎŤµ¤ò±Û¤¨¤Ê¤¤¤è¤¦¤Ë¹Ô¤ï¤ì¤Þ ¤¹¡¥¥³¥Þ¥ó¥É¤Ë¤Ï°ì¤Ä¤Î‘{}’¤À¤±¤¬²Äǽ¤Ç¡¤‘+’¤ÎľÁ°¤Ë¡¤ºÇ¸å¤Ë ½ñ¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡¥‘{}’ľ¸å°Ê³°¤Î°ÌÃ֤ˤ¢¤ë‘+’¤Ï¡¤ÆÃḚ̂·¤¤ ¤µ¤ì¤Þ¤»¤ó(¤Ä¤Þ¤ê¡¤¥³¥Þ¥ó¥É¤Î½ªÃ¼¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó)¡¥

Action: -exec command {} +

¤³¤Î¡¤Í¾¤ê¥»¥­¥å¥ê¥Æ¥£¡¼¤Î¹â¤¯¤Ê¤¤‘-execdir’¥¢¥¯¥·¥ç¥ó¤Î°¡¼ï¤Ï¡¤ POSIX¤Ç»ØÄꤵ¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤¹¡¥¼ç¤Ê°ã¤¤¤Ï¡¤find¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¥Ç¥£ ¥ì¥¯¥È¥ê¤Ç¥³¥Þ¥ó¥É¤¬¼Â¹Ô¤µ¤ì¤ë¤È¤¤¤¦¤³¤È¤Ç¡¤‘{}’¤¬¡¤¥Þ¥Ã¥Á¤·¤¿¥Õ¥¡ ¥¤¥ë¤Î¥Ù¡¼¥¹Ì¾¤Ç¤Ï¤Ê¤¯¡¤³«»Ï¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¤ÎÁêÂХѥ¹¤ËŸ³«¤µ¤ì¤ë¤³¤È ¤ò°ÕÌ£¤·¤Þ¤¹¡¥

find¤¬½ªÎ»¤¹¤ëÁ°¤Ë¡¤ÉôʬŪ¤Ë¹½ÃÛ¤µ¤ì¤¿¥³¥Þ¥ó¥É¥é¥¤¥ó¤¬¼Â¹Ô¤µ¤ì¤Þ ¤¹¡¥¤³¤ì¤Ï¡¤‘-quit’¥¢¥¯¥·¥ç¥ó¤Ç½ªÎ»¤µ¤ì¤¿¾ì¹ç¤â¤½¤¦¤Ê¤ê¤Þ¤¹¡¥¤·¤« ¤·¡¤¥¨¥é¡¼¤Î·Á¼°¤Ë¤è¤Ã¤Æ¤Ï(Î㤨¤Ðstat()¤Î¸Æ¤Ó½Ð¤·¤¬¥«¥ì¥ó¥È¥Ç¥£ ¥ì¥¯¥È¥ê¤ÇÉÔ²Äǽ)¡¤Ä¾¸å¤ËÃ×̿Ū¤Ê½ªÎ»¤Ë¤Ê¤ê¤Þ¤¹¡¥¤³¤Î¾õ¶·¤Ç¤Ï¡¤ÉôʬŪ¤Ë ¹½ÃÛ¤µ¤ì¤¿¥³¥Þ¥ó¥ÉÍé°ø¤Ï¸Æ¤Ó½Ð¤µ¤ì¤Þ¤»¤ó(¤³¤ì¤Ç¡¤Ìµ¸Â¥ë¡¼¥×¤òÍ޻ߤ·¤Þ ¤¹)¡¥

¤â¤¦°ì¤Ä¤Î¡¤Í¾¤ê¥»¥­¥å¥ê¥Æ¥£¤Ï¹â¤¯¤¢¤ê¤Þ¤»¤ó¤¬¡¤°ìÅ٤˰ì¤Ä°Ê¾å¤Î¥Õ¥¡¥¤ ¥ë¤Ç¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ëÊýË¡¤Ï¡¤xargs¥³¥Þ¥ó¥É¤ò»ÈÍѤ¹¤ëÊýË¡¤Ç¡¤°Ê ²¼¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡¥

xargs [option] [command [initial-arguments]]

xargs¤ÏÄ̾ɸ½àÆþÎϤ«¤é°ú¿ô¤òÆÉ¤ß¹þ¤ß¤Þ¤¹¡¥¤³¤ì¤é¤Î°ú¿ô¤Ï¶õÇò (¤½¤ì¤Ï¡¤¥À¥Ö¥ë¥¯¥ª¡¼¥È¤ä¥·¥ó¥°¥ë¥¯¥ª¡¼¥È¤Þ¤¿¤Ï¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ÇÊݸî²Ä ǽ)¤ä²þ¹Ô¤ÇʬΥ¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥¤½¤ì¤Ïcommand (¥Ç¥Õ¥©¥ë¥È¤Ç /bin/echo)¤ò¡¤É¸½àÆþÎϤ«¤éÆÉ¤ß¹þ¤Þ¤ì¤¿°ú¿ô¤¬Â³¤¯¤¢¤é¤æ¤ë initial-arguments¤òÍѤ¤¤Æ¡¤°ì²ó°Ê¾å¼Â¹Ô¤·¤Þ¤¹¡¥É¸½àÆþÎϤζõÇò¹Ô¤Ï ̵»ë¤µ¤ì¤Þ¤¹¡¥

¶õÇò¤ÎʬΥ̾¤ÎÂå¤ï¤ê¤Ë¡¤‘find -print0’¤ä‘find -fprint0’¤ò»ÈÍÑ ¤·¡¤GNU xargs¡¤GNU tar¡¤GNU cpio¡¤¤Þ¤¿¤Ï perl¤Ø¡¤‘-0’¤ä‘--null’¥ª¥×¥·¥ç¥ó¤òÍ¿¤¨¤Æ¡¤½ÐÎϤò½èÍý¤· ¤¿Êý¤¬°ÂÁ´¤Ç¤¹¡¥locate¥³¥Þ¥ó¥É¤Ë¤â¡¤Æ±¤¸¤³¤È¤ò¹Ô¤¦‘-0’¤ä ‘--null’¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡¥

°Ê²¼¤Î¤è¤¦¤Ë¡¤°ú¿ô¥ê¥¹¥È¤ò½èÍý¤¹¤ë¤¿¤á¥·¥§¥ë¥³¥Þ¥ó¥É¤ÎÃÖ´¹(¥Ð¥Ã¥¯¥¯¥ª¡¼ ¥È)¤ò»ÈÍѤ¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡¥

grep -l sprintf `find $HOME -name '*.c' -print`

¤·¤«¤·¡¤¤½¤ÎÊýË¡¤Ï¡¤‘.c’¥Õ¥¡¥¤¥ë̾¤ÎŤµ¤¬¡¤¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ ¥à¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÎŤµ¤ÎÀ©¸Â¤òĶ²á¤¹¤ë¾ì¹ç¡¤¥¨¥é¡¼¤¬À¸¤¸¤ë¤Ç¤·¤ç¤¦¡¥ xargs¤Ï¡¤À©¸Â¤òĶ²á¤·¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤¿¤á¤ËɬÍפʤÀ¤±¥³¥Þ¥ó¥É¤ò¼Â ¹Ô¤¹¤ë¤³¤È¤Ç¡¤¤½¤ÎÌäÂê¤òÈò¤±¤Þ¤¹¡¥

find $HOME -name '*.c' -print | xargs grep -l sprintf

¤·¤«¤·¡¤É¸½àÆþÎϤ¬Ã¼Ëö¤Ç¤¢¤ë¤³¤È¤òɬÍפȤ¹¤ë¥³¥Þ¥ó¥É(Î㤨¤Ð¡¤ less)¤Î¾ì¹ç¡¤¥·¥§¥ë¥³¥Þ¥ó¥É¤ÎÃÖ´¹¤Î¼êË¡¤ä¡¤xargs¤Î ‘--arg-file’¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥

xargs¥³¥Þ¥ó¥É¤Ï¡¤¥³¥Þ¥ó¥É¤¬255¤Î¥¹¥Æ¡¼¥¿¥¹¤Ç½ªÎ»¤·¤¿¤ê (xargs¤¬¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ·Ää»ß¤·¤Æ¤¤¤Þ¤¹)¡¤¥Õ¥¡¥¤¥ë¤Î½ª ¤ï¤ê¤È¤Ê¤ë‘--eof’¥ª¥×¥·¥ç¥ó¤Ç»ØÄꤵ¤ì¤Æ¤¤¤ëʸ»úÎó¤ò´Þ¤ó¤Ç¤¤¤ë¹Ô¤ò ÆÉ¤ß¹þ¤à¤Þ¤Ç¤Ï¡¤¤¹¤Ù¤Æ¤ÎÆþÎϤò½èÍý¤·¡¤¥³¥Þ¥ó¥É¥é¥¤¥ó¤ò¹½ÃÛ¤·¡¤¤½¤ì¤ò¼Â ¹Ô¤·¤Þ¤¹¡¥