ãã¼ã¿ãã«ãªã·ã§ã«ã¹ã¯ãªããã«ããããºã« (1) find
追è¨ï¼å 容ãä¼´ã£ã¦ããªãã£ãã®ã§ã¿ã¤ãã«ãå¤æ´ãã¾ãããã©ãèãã¦ãå ¥éè¬åº§ã«ãªãæ°é ãããã¾ããã
以åã®è¨äºãシェルスクリプトでシンボリックリンク先が同一かチェックする方法ãã§ã®çåç¹ã¯ãèªåã®æ¸ããã·ã§ã«ã¹ã¯ãªããããã¼ã¿ãã«ãã©ãã調ã¹ãæ¹æ³ã£ã¦ä½ã ããï¼ãã¨ãããã¨ã§ããããid:odzãããããã(K)ãããtsekineããã®3人ãããPOSIXã®man pageè¦ããï¼ãã¨ã¢ããã¤ã¹ãé ãã¾ããããããã¨ããããã¾ãï¼ãªãã»ã©ããããªä¾¿å©ãªããã¥ã¡ã³ãããããã§ããã
ããããããã°åã«ã模ç¯çãªã·ã§ã«ã¹ã¯ãªãããæ¸ãã¡ãããï¼ã¨ãããã¨ã§é£è¼è¨äºåãã¾ãã第ä¸åç®ã®ãé¡ã¯findã³ãã³ãã§ãã
ä»åãfindã«é¢ãã¦åå
容ã®è³ªåã2ã¤è¦ã¤ãã¾ãããGNUãããªãfindã§-maxdepth 1ç¸å½ã®ãã¨ãããããããã§ãã
ã§ã¯ãã¼ã¿ãã«ãªæ¹æ³ãèãã¦ã¿ã¾ããæ©éPOSIXのfindコマンドのman pageãè¦ã¦ã¿ãã¨ããªãã·ã§ã³å°ãªã£ï¼Solarisに付属するman pageãè¦ã¤ãã¾ãããããã¯ããªãã·ã§ã³ãå°ãªãæãã¾ããä¸ã®è³ªåè
ã®æ¹ã
ãè¦å´ããããã â¦ã
ãããª-maxdepth 1ç¸å½ãå®ç¾ããæ¹æ³ã§ãããããè¯ã解çä¾ãèãã¦ã¿ã¾ããã
gfind . -maxdepth 1 -type f -name '*.txt'
GNU findã®ä¸è¨ã³ãã³ãã¨åãçµæããç±ç·æ£ããfindã³ãã³ãã§ãä¸è¨ã®ããã«ããã°å¾ããã¾ãã
find . -type d '!' -name . -prune -o -type f -name '*.txt' -print
ãã ããããããããèªã¿è§£ããªã人ãããã¨æãã¾ãã®ã§ãç°¡åã«èª¬æãã¾ãã
-pruneã¨ã¯
findã®-pruneãªãã·ã§ã³ã¯ããæ¡ä»¶ã«åããã£ã¬ã¯ããªä»¥ä¸ããã³ãã¡ã¤ã«ããã§ãã¯å¯¾è±¡ã«ããªããã¨ããæå®ã§ãã
ä¸æ¹ã-printã¨ããã®ã¯ãæ¡ä»¶ã«åã£ããã£ã¬ã¯ããªåããã¡ã¤ã«åãåºåãããã¨ãããªãã·ã§ã³ã§ãä½ãæå®ããªãå ´åã«ã¯åæã«è£ããã¾ãã-pruneãªã©ã使ããªãéã-printãæå®ãããã¨ãç¡ãã§ããããããç¥ããã«ä½¿ã£ã¦ãã人ãå¤ãã®ã§ã¯ãªãã§ããããã
ã¾ãã-oã¯ãorãã®æå³ã§ãã
ä¸ã®ã³ãã³ããæ¹ãã¦èªã¿è§£ãã¨ãã"."ã¨ããååãããªããã£ã¬ã¯ããªä»¥ä¸ã¯ãã§ãã¯ããªããã¾ãã"*.txt"ã«ããããããã¡ã¤ã«ãè¦ã¤ãã£ãããã¡ã¤ã«åãåºåãããã¨ãããã¨ã«ãªãã¾ããã.ãæ¤ç´¢å¯¾è±¡ã«ãã¦ã.以å¤ã®ãã£ã¬ã¯ããªãpruneãããã¨ããã®ããã½ã§ãã
ç¹å®ã®ãã£ã¬ã¯ããªä»¥ä¸ã§æ¤ç´¢ãããå ´åããã¹åã®æå¾ã«"/."ãã¤ããã°ãã¾ãåãã¾ãã
find /path/to/search/. -type d '!' -name . -prune -o -type f -name '*.txt' -print
ãã®ããæ¹ã¯ããºã«çãªæå³ã§é¢ç½ãã¨æããã§ãããä»äºã§æ¸ãå ´åã¯é¿ããæ¹ãããããããã¾ãããè£è¶³ãã¦ããã¨OpenSolarisæ¨æºã®findã§ãæå¾
éãã«åãã¾ããããç§ã®æè¿ã®ç°å¢ã§ã¯å
¨ã¦åãã¦ããããã§ãã®ã§ã使ããªããã¨ã¯ç¡ãã¨æããã§ãããããªããã¼ãããæ°ããã¾ãã
-maxdepth 2ç¸å½ã-execããæ´ã«findãå¼ã³åºãã°å®ç¾ã§ãã¾ãããããã¾ã§ããã¨ç®çãè¦å¤±ã£ã¦ãã¨ããè¨ããããç¡ãã§ãããããã¯ãPOSIXãªfindã§ããã«ã¯è¤éãããã¨ãããã¨ã§ããããGNU findã£ã¦ç´ æ´ããããã®ã§ãããå®ã¯FreeBSDãMacOSXã®findãããªãé«æ©è½ã§ã-maxdepthã使ãã¾ãã
ã¾ã¨ã
ãã¼ã¿ãã«ãªã·ã§ã«ã¹ã¯ãªãããæ¸ããã¨æã£ããå¶ç´ãå¤ããã§ããã-notãæ¹è¨ã¨ã¯äºæ³å¤ã§ãããè¤éãªãã¨ãããããªã£ããPerlã¨ãPythonã¨ãã§æ¸ããæ¹ãããããããã¾ããããããªãã²ã©ãçµè«ã§ããã©ã
ã©ããã¦ããã¼ã¿ãã«ãªã·ã§ã«ã¹ã¯ãªãããæ¸ãå¿ è¦ãããå ´åã¯OpenSolarisãå ¥æãã¦ããã¨è¯ãã¨æãã¾ããSolarisã®æ¨æºã³ãã³ãã¯æå¤ã¨èéã®ãããªããã®ãå¤ãã®ã§ããã¹ãç°å¢ã¨ãã¦å¤§æ´»èºããã®ã§ã¯ãªãã§ããããã