Previous: Delete Files, Up: Actions   [Contents][Index]


3.5 ¥Æ¥¹¥È¤ÎÄɲÃ

find¤ÎÁȤ߹þ¤ß¥Æ¥¹¥È¤¬Ä´ºº¤·¤Ê¤¤¡¤¥Õ¥¡¥¤¥ë¤Î°À­¤ÎÄ´ºº¤ò¤¹¤ë¤³¤È ¤¬²Äǽ¤Ç¤¹¡¥¤³¤¦¤¹¤ë¤¿¤á¤Ë¡¤find¤¬½ÐÎϤ·¤¿¥Õ¥¡¥¤¥ë¥ê¥¹¥È¤Ø¤Î¥Õ¥£ ¥ë¥¿¡¼¤È¤Ê¤ë¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤¿¤á¡¤xargs¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥ xargs¤Ë¤è¤Ã¤Æ¼Â¹Ô¤µ¤ì¤ë¥×¥í¥°¥é¥à¤¬¹Ô¤Ê¤¦»Å»ö¤ò¸º¤é¤¹¤¿¤á¡¤¥ê¥¹ ¥È¤¬¾¯¤Ê¤¯¤Ê¤ë¤è¤¦¤Ë¡¤find¤ÎÁȤ߹þ¤ß¥Æ¥¹¥È¤ò¤Ç¤­¤ë¤À¤±»ÈÍѤ·¤Æ²¼ ¤µ¤¤¡¥find¤ÎÁȤ߹þ¤ß¥Æ¥¹¥È¤Ï¡¤Â¾¤Î¥×¥í¥°¥é¥à¤¬¼Â¹Ô¤¹¤ë¥Æ¥¹¥È¤è¤ê ®¤¯¼Â¹Ô¤µ¤ì¤ë¤Ç¤·¤ç¤¦¡¥

¸úΨ¤ÎÌäÂê¤Ç¡¤³°Éô¥×¥í¥°¥é¥à¤Î¼Â¹Ô²ó¿ô¤òÀ©¸Â¤¹¤ë¤³¤È¤¬Ìò¤ËΩ¤Ä¤³¤È¤â¤è ¤¯¤¢¤ê¤Þ¤¹¡¥¤³¤Î¤¿¤á¡¤xargs¤ò»ÈÍѤ·¤Æ“³ÈÄ¥”¥Æ¥¹¥È¤ò¼ÂÁõ¤¹¤ë¤Î ¤ÏÎɤ¤¹Í¤¨¤Ç¤¹¡¥

Î㤨¤Ð°Ê²¼¤Ë¡¤/usr/local¥Ç¥£¥ì¥¯¥È¥ê¥Ä¥ê¡¼Æâ¤Îstrip¤µ¤ì¤Æ¤¤¤Ê¤¤ ¥Ð¥¤¥Ê¥ê¤Î¡¤¤¹¤Ù¤Æ¤Î̾Á°¤ò½ÐÎϤ¹¤ëÊýË¡¤¬¤¢¤ê¤Þ¤¹¡¥ÁȤ߹þ¤ß¥Æ¥¹¥È¤Ï¡¤ÄÌ ¾ï¤Î¥Õ¥¡¥¤¥ë¤Ç¤Ê¤¤¤â¤Î¤ä¡¤¼Â¹Ô²Äǽ¤Ç¤Ê¤¤¥Õ¥¡¥¤¥ë¤Ç¡¤file¤ò¼Â¹Ô¤¹ ¤ë¤³¤È¤òÈò¤±¤Þ¤¹¡¥

find /usr/local -type f -perm /a=x | xargs file | 
  grep 'not stripped' | cut -d: -f1

cut¥×¥í¥°¥é¥à¤Ï¡¤file¤Î½ÐÎϤ«¤é¥Õ¥¡¥¤¥ë̾°Ê¹ß¤Î¤â¤Î¤¹¤Ù¤Æ ¤òºï½ü¤·¤Þ¤¹¡¥

¤·¤«¤·¡¤xargs¤ò»ÈÍѤ¹¤ë¤³¤È¤Ï¡¤¥»¥­¥å¥ê¥Æ¥£¤Î½ÅÍפÊÌäÂê¤ËÁø¶ø¤¹ ¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹(see Security Considerations)¡¥¤³¤ì¤é¤Ï ‘-execdir’¤ò»ÈÍѤ¹¤ë¤³¤È¤Ç²óÈò¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡¥‘-execdir’ ¥¢¥¯¥·¥ç¥ó¤Ï¡¤Â¾¤Î¥Æ¥¹¥È½¸¤Î¹ç´Ö¤äfind¤Î¥¢¥¯¥·¥ç¥ó¤ËÆÈ¼«¤Î¥Æ¥¹¥È ¤ò½ñ¤¯¤È¤­¤Ë¤âÌò¤ËΩ¤Á¤Þ¤¹(Î㤨¤Ð¡¤‘-prune’¤ò»ÈÍѤ·¤¿¤¤¤«¤â¤·¤ì¤Þ ¤»¤ó)¡¥

find¤Î¼°¤ÎÃæ´Ö¤Î¤É¤³¤«¤ÇÆÃ¼ì¤Ê¥Æ¥¹¥È¤òÇÛÃÖ¤·¤¿¤¤¾ì¹ç¡¤¥Æ¥¹¥È¤ò¼Â »Ü¤¹¤ë¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ë¡¤‘-execdir’ (¤Þ¤¿¤Ï¡¤Í¾¤ê¥»¥­¥å¥ê ¥Æ¥£¤Î¹â¤¯¤Ê¤¤‘-exec’)¤ò»ÈÍѤ¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡¥‘-execdir’¤Ï¡¤ ¼Â¹Ô¤µ¤ì¤¿¥×¥í¥°¥é¥à¤Î½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤òɾ²Á¤¹¤ë¤Î¤Ç¡¤ÆÃ¼ì¤Ê°À­¤ò¸¡ºº¤¹ ¤ë¥×¥í¥°¥é¥à(¤½¤ì¤Ï¡¤¥·¥§¥ë¥¹¥¯¥ê¥×¥È¤â²Äǽ¤Ç¤¹)¤ò½ñ¤¯¤³¤È¤È¡¤¿¿(¥¼¥í) ¤äµ¶(¥¼¥í°Ê³°)¤Î¥¹¥Æ¡¼¥¿¥¹¤Ç½ªÎ»¤µ¤»¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡¥¤½¤Î¤è¤¦¤ÊÆÃ¼ì¤Ê ¥Æ¥¹¥È¤Ï¡¤ÁȤ߹þ¤ß¥Æ¥¹¥È¤¬µ¶¤Èɾ²Á¤µ¤ì¤ë¾ì¹ç¤Ï¹Ô¤Ê¤ï¤Ê¤¤¿·¤·¤¤¥×¥í¥»¥¹ ¤ò³«»Ï¤¹¤ë¤Î¤Ç¡¤¤½¤ì¤òÁȤ߹þ¤ß¥Æ¥¹¥È¤Î¸å¤ËÇÛÃÖ¤¹¤ë¤³¤È¤ÏÎɤ¤¹Í¤¨ ¤Ç¤¹¡¥

°Ê²¼¤Ï¡¤°ú¿ô¤¬strip¤µ¤ì¤Æ¤¤¤ë¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤«¤É¤¦¤«¤òÄ´ºº¤¹¤ë¡¤ unstripped¤È¤¤¤¦Ì¾Á°¤Î¥·¥§¥ë¥¹¥¯¥ê¥×¥È¤Ç¤¹¡¥

#! /bin/sh
file "$1" | grep -q "not stripped"

¤³¤Î¥¹¥¯¥ê¥×¥È¤Ï¡¤¥Ñ¥¤¥×¥é¥¤¥ó¤ÎºÇ¸å¤Î¥³¥Þ¥ó¥É¤Î¥¹¥Æ¡¼¥¿¥¹¤Ç¥·¥§¥ë¤¬½ª λ¤¹¤ë¤³¤È¤Ë°Í¸¤·¡¤¤³¤Î¾ì¹çgrep¤Ë¤Ê¤ê¤Þ¤¹¡¥grep¤Ï¡¤¥Þ¥Ã ¥Á¤¬¸«¤Ä¤«¤ë¾ì¹ç¤Ï¿¿¤Ç½ªÎ»¤·¡¤¤½¤ì°Ê³°¤Ç¤Ïµ¶¤Ç½ªÎ»¤·¤Þ¤¹¡¥°Ê²¼¤Ë¤Ë(¥µ¡¼ ¥Á¥Ñ¥¹¤Ë¤¢¤ë¤È²¾Äꤷ¤Æ¤¤¤ë)¥¹¥¯¥ê¥×¥È¤òÍøÍѤ·¤Æ¤¤¤ëÎ㤬¤¢¤ê¤Þ¤¹¡¥¤½¤ì¤Ï¡¤ ¥Õ¥¡¥¤¥ësbinsÆâ¤Îstrip¤µ¤ì¤Æ¤¤¤ë¼Â¹Ô·Á¼°¤È¡¤ubinsÆâ¤Î strip¤µ¤ì¤Æ¤¤¤Ê¤¤¼Â¹Ô·Á¼°¤ò¥ê¥¹¥È¥¢¥Ã¥×¤·¤Þ¤¹¡¥

find /usr/local -type f -perm /a=x \
  \( -execdir unstripped '{}' \; -fprint ubins -o -fprint sbins \)