Mastering Shell Scripting: Comprehensive Guide
You are an expert shell scripting and command-line tutor. Your job is to help me master shell scripting, one-liners, and practical command-line techniques for my work.
In this thread, I will provide shell commands or topics that I would like to learn. For each one, please provide a comprehensive explanation that is thorough enough that I wonât need to consult any other resources. The explanation should cover:
- Core functionality and purpose
- All options and features (except extremely obscure ones), with clear descriptions
- Examples that cover every single option or feature you provided above, mixing basic to advanced, each with expected output or behavior
- Common use cases and best practices
- Potential pitfalls or gotchas to avoid
For all features and examples:
-
Mark any non-POSIX features with [Non-POSIX]
-
Specify the shell name for shell-specific features (e.g., [bash], [zsh], [ksh], [fish], etc.)
-
Tag implementation/platform differences if needed (e.g., [GNU], [BSD], [BusyBox], [macOS], [Linux], etc.)
Include at least 5 exercises of varying difficulty levels with solutions at the end.
Please provide complete, self-contained explanations in each response (donât split them across multiple messages). For this first response only, please confirm that you understand these instructions without providing examples. From the second message onward, provide full explanations with examples and outputs. Please reply in Japanese.
æ¿ç¥ããŸããã ä»åŸã¯ãåã·ã§ã«ã³ãã³ãããããã¯ã«ã€ããŠã以äžã®å 容ãçã蟌ãã å æ¬çãªè§£èª¬ãè¡ããŸãïŒ
-
ã³ã¢ãªæ©èœãšç®ç
-
äž»ãªãªãã·ã§ã³ãæ©èœïŒæ¥µç«¯ã«ãã€ããŒãªãã®ãé€ããå šãŠç¶²çŸ ããŠæç¢ºã«èª¬æïŒ
-
å ·äœäŸïŒäžèšã®å šãªãã·ã§ã³ãæ©èœãç¶²çŸ ãã圢ã§ãåºæ¬çãªäœ¿ãæ¹ããäžçŽè åããã¯ããã¯ãŸã§ç€ºããããããæåŸ ãããåºåãåäœãèšèŒïŒ
-
äžè¬çãªäœ¿çšäŸãšãã¹ããã©ã¯ãã£ã¹ïŒå®åã§ã®æŽ»ç𿹿³ãå¹ççãªäœ¿ãæ¹ã®ææ¡ïŒ
-
泚æç¹ãèœãšã穎ïŒèª€çšããããç¹ãé¥ããã¡ãªãã¹ããã®åé¿çïŒ
ãŸãã説æå
ã§ã¯POSIXæšæºå€ã®æ©èœã«ã¯ [Non-POSIX] ãšæèšããã·ã§ã«åºæã®æ©èœïŒäŸïŒ[bash], [zsh] ãªã©ïŒã¯è©²åœã·ã§ã«åãã¿ã°ãšããŠä»ãå ããŸããGNU/BSDãBusyBoxããã©ãããã©ãŒã ïŒ[Linux], [macOS] çïŒã®å®è£
å·®ãããå Žåãé©å®æ³šéããæç¢ºã«åºå¥ããŸãã
æåŸã«ãåãããã¯ã«é¢ããŠå°ãªããšã5åã®ç·Žç¿åé¡ïŒé£æåºŠã¯åçŽããäžçŽãŸã§ïŒãäœæãããã®è§£çãšè§£èª¬ãåçã®æ«å°Ÿã«ç€ºããŸãããããã®åçã¯å šãŠäžã€ã®ã¡ãã»ãŒãžå ã§å®çµããããã«ããä»ã®è³æãåç §ããªããŠãååçè§£ã§ããå 容ãç®æããŸããä»åŸãšããããããé¡ãããããŸãã
find
findã³ãã³ã培åºè§£èª¬
æŠèŠ: findã³ãã³ãã®åºæ¬æ©èœãšç®ç
findã³ãã³ãã¯ãæå®ãããã£ã¬ã¯ããªããªãŒå
ã§ãã¡ã€ã«ããã£ã¬ã¯ããªãæ€çŽ¢ãã匷åãªãŠãŒãã£ãªãã£ã§ãããã¹åããã¡ã€ã«åã®ãã¿ãŒã³ãçš®é¡ããµã€ãºãææè
ãæŽæ°æ¥æãªã©ããŸããŸãªæ¡ä»¶ã§ãã£ã«ã¿ãªã³ã°ããäžèŽããé
ç®ã«å¯ŸããŠåŠçãå®è¡ã§ããŸããfindã¯ååž°çã«ãã£ã¬ã¯ããªãå·¡åããPOSIXç°å¢ã¯ãã¡ããLinuxãmacOSãªã©å€ãã®UNIXç³»OSã§å©çšå¯èœã§ãã圢åŒã¯äžè¬ã«æ¬¡ã®ããã«ãªããŸã:
find [<æ€çŽ¢éå§ãã¹>...] [<åŒïŒæ€çŽ¢æ¡ä»¶ãšã¢ã¯ã·ã§ã³ïŒ>...]
-
æ€çŽ¢éå§ãã¹: ã©ã®ãã£ã¬ã¯ããªããæ€çŽ¢ãå§ããããæå®ããŸããè€æ°æå®ãå¯èœã§ãïŒçç¥ããå Žåãå€ãã®å®è£ ã§ã«ã¬ã³ããã£ã¬ã¯ããª
.ã䜿ãããŸãããPOSIXèŠæ Œã§ã¯æªå®çŸ©ã®æåã®ããæç€ºæå®ãæšå¥šãããŸãïŒã -
åŒïŒexpressionïŒ: æ€çŽ¢æ¡ä»¶ïŒãªãã·ã§ã³ããã¹ãïŒãšã¢ã¯ã·ã§ã³ã®çµã¿åããã§ãã
findã§ã¯æ¡ä»¶ã«ããããããã¡ã€ã«ãèªåçã«è¡šç€ºïŒããã©ã«ãåäœïŒã§ããŸãããåŸè¿°ã®ã¢ã¯ã·ã§ã³ãæå®ããŠããŸããŸãªæäœãå®è¡ã§ããŸãã
findã³ãã³ãã®ç¹åŸŽ:
-
æè»ãªæ¡ä»¶æå®: ååããã¹ã®ãã¿ãŒã³äžèŽããã¡ã€ã«çš®å¥ïŒéåžžãã¡ã€ã«ããã£ã¬ã¯ããªãã·ã³ããªãã¯ãªã³ã¯çïŒããµã€ãºãã¿ã€ã ã¹ã¿ã³ããããŒããã·ã§ã³ãææè ãªã©ã现ããªæ¡ä»¶ã§æ€çŽ¢å¯èœã§ãã
-
ååž°çæ€çŽ¢: æå®ãã£ã¬ã¯ããªä»¥äžã®ãã¹ãŠã®éå±€ãæ¢çŽ¢ããŸãïŒæ·±ããå¶éãããªãã·ã§ã³ããããŸãïŒã
-
ããŒã«è«çã®çµã¿åãã: è€æ°ã®æ¡ä»¶ãè«çAND/OR/NOTã§çµã¿åãããè€éãªæ€çŽ¢ã¯ãšãªãæ§æå¯èœã§ãã
-
çµæãžã®æäœé©çš: æ¡ä»¶ã«åèŽãããã¡ã€ã«ã«å¯Ÿãã衚瀺ïŒ
-printïŒä»¥å€ã«ãåé€ïŒ-deleteïŒãç§»åã»å®è¡ïŒ-execïŒãäžèŠ§è¡šç€ºïŒ-lsïŒãªã©çŽæ¥ã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸãã -
POSIXæšæºã§å®çŸ©ãããåºæ¬æ©èœãšãå€ãã®æ¡åŒµæ©èœïŒå®è£ äŸåã®ãªãã·ã§ã³ïŒãååšããŸããæ¡åŒµæ©èœã䜿ãå Žåã¯ç§»æ€æ§ã«æ³šæãå¿ èŠã§ãã
äž»ãªãªãã·ã§ã³ã»æ©èœã®äžèЧ
findã³ãã³ãã§äœ¿ãããäž»ãªãªãã·ã§ã³ãåŒïŒãã©ã€ããªïŒã®æ©èœãšæå³ããã«ããŽãªãŒå¥ã«æŽçããŠèª¬æããŸããPOSIXæšæºã«ãªãæ¡åŒµæ©èœã«ã¯**[Non-POSIX]ãšæèšããç¹å®ã®å®è£
ã«åºæã®ãã®ã¯[GNU]ã[BSD]**, [macOS]ïŒmacOSã®findã¯BSDç³»ïŒçã®ã¿ã°ã§ç€ºããŸãã
æ€çŽ¢ç¯å²ã»æ¢çŽ¢åäœãå¶åŸ¡ãããªãã·ã§ã³
-
-H,-L,-P: ã·ã³ããªãã¯ãªã³ã¯ã®æ±ããå¶åŸ¡ããŸãïŒ-Pã¯ããã©ã«ãåäœã§ãªã³ã¯ãã®ãã®ãæ±ãïŒã-H: ã³ãã³ãã©ã€ã³åŒæ°ãšããŠæå®ãããã¹ãã·ã³ããªãã¯ãªã³ã¯ã®å Žåãããã蟿ã£ãŠå®éã®åç §å ãæ€çŽ¢å¯Ÿè±¡ã«ããŸããæ¢çŽ¢äžã«åºãŠãããªã³ã¯ã¯èŸ¿ããŸãã (pubs.opengroup.org) (pubs.opengroup.org)ã-L: [POSIX] ãã¹ãŠã®ã·ã³ããªãã¯ãªã³ã¯ã蟿ããŸãïŒãªã³ã¯å ã®å®ãã¡ã€ã«/ãã£ã¬ã¯ããªã察象ã«ããïŒãååšããªããªã³ã¯ã®å Žåã¯ãªã³ã¯èªäœã察象ãšããŸã (pubs.opengroup.org)ã-P: æå®ãããªã³ã¯ã蟿ããã«ãªã³ã¯ãã®ãã®ãæ±ããŸãïŒããã©ã«ãïŒã泚: è€æ°æå®ãããå ŽåãåŸã«æå®ãããªãã·ã§ã³ãæå¹ã«ãªããŸã (pubs.opengroup.org)ã
-
-maxdepth <n>[Non-POSIX][GNU][BSD]: ååž°çæ€çŽ¢ã®æ·±ããå¶éããŸãã-maxdepth 0ãªãéå§ãã£ã¬ã¯ããªèªèº«ã®ã¿ã-maxdepth 1ãªãéå§ãã£ã¬ã¯ããªãšãã®çŽäžãŸã§ããšãã£ãå ·åã«æå€§<n>éå±€ãŸã§æ¢çŽ¢ããŸãã -
-mindepth <n>[Non-POSIX][GNU][BSD]: æäœæ¢çŽ¢æ·±åºŠãæå®ããŸããéå§ç¹ãã<n>éå±€ç®ããæµ ãå Žæã¯æ€çŽ¢å¯Ÿè±¡ã«ããŸããïŒäŸ:-mindepth 1ãªãéå§ãã£ã¬ã¯ããªèªèº«ã¯é€å€ããã®äžèº«ããæ€çŽ¢éå§ïŒã -
-mount/-xdev[POSIX]: ä»ãã¡ã€ã«ã·ã¹ãã ãžã®æšªæã鲿¢ããŸãã-mountïŒã·ã¹ãã ã«ãã£ãŠã¯-xdevãšå矩ïŒãæå®ãããšãæ€çŽ¢éå§ãã¹ãšããã€ã¹IDãç°ãªããã£ã¬ã¯ããªã«ã¯éããŠãããŸãã (pubs.opengroup.org) (pubs.opengroup.org)ãäŸãã°Linuxã§ã¯-mountãš-xdevãåãåäœã§ãå¥ã®ãã¡ã€ã«ã·ã¹ãã ïŒäŸ: ããŠã³ããããå€éšããªã¥ãŒã ã/procãªã©ä»®æ³FSïŒã¯æ€çŽ¢ããé€å€ã§ããŸãã -
-prune[POSIX]: 該åœãã£ã¬ã¯ããªãããä»¥äžæ¢çŽ¢ããªãããã«ããŸããåžžã«çãè¿ãç¹æ®ãªãã©ã€ããªã§ããã£ã¬ã¯ããªã«ãããããå Žåã«ãã®ãã£ã¬ã¯ããªä»¥äžãååž°çã«æ¢çŽ¢ããªãããã«ã«ããããŸã (pubs.opengroup.org) (pubs.opengroup.org)ã-pruneèªäœã¯ã¢ã¯ã·ã§ã³ã§ã¯ãªããããåç¬ã§äœ¿ãå Žåã¯-printçãšçµã¿åãããŸãïŒåŸè¿°ã®äœ¿çšäŸåç §ïŒã泚æ:-depthãªãã·ã§ã³ãæå®ãããŠãããš-pruneã¯ç¡èŠãããŸã (pubs.opengroup.org)ã -
-depth[POSIX]: ãã£ã¬ã¯ããªãæ·±ãåªå ã§åŠçããŸããéåžžfindã¯ãã£ã¬ã¯ããªãèŠã€ãããšå ã«ãã®ãã£ã¬ã¯ããªèªèº«ãåŠçããŠããäžã«å ¥ããŸããã-depthæå®æã¯äžã®ãšã³ããªãå šãŠåŠçããåŸã§ãã£ã¬ã¯ããªèªèº«ãåŠçããŸã (pubs.opengroup.org)ããã£ã¬ã¯ããªå ã®ãã¡ã€ã«ãå ã«åŠçãããå Žåãã-pruneãç¡å¹åããŠå šãŠæ¢çŽ¢ãããå Žåã«äœ¿ããŸãïŒäŸ: ãã£ã¬ã¯ããªãåé€ããåã«äžèº«ãåé€ããå Žåãªã©ïŒã
ååã»ãã¹ã«é¢ããæ€çŽ¢æ¡ä»¶
-
-name <ãã¿ãŒã³>: ãã¡ã€ã«åïŒããŒã¹åïŒãæå®ã®ã°ãããã¿ãŒã³ãšãããããå Žåã«çã«ãªããŸã (pubs.opengroup.org)ãã¯ã€ã«ãã«ãŒãïŒ*,?,[...]ïŒãå©çšå¯èœã§ãããã·ã§ã«å±éãé²ãããã¯ã©ãŒãããã®ãåºæ¬ã§ãïŒäŸ:-name "*.log"ïŒã倧æåå°æåã¯åºå¥ãããŸãã -
-iname <ãã¿ãŒã³>[POSIX]:-nameã®å€§æåå°æåãç¡èŠããçã§ã (pubs.opengroup.org)ãäŸãã°-name "FILE.TXT"ã ãšFILE.TXTã«ãããããããŸãããã-iname "FILE.TXT"ãªãfile.txtãFile.Txtãªã©ã«ããããããŸãã -
-path <ãã¿ãŒã³>: ãã¹å šäœïŒæ€çŽ¢éå§ç¹ããã®çžå¯Ÿãã¹ïŒããã¿ãŒã³ã«ãããããå Žåã«çã«ãªããŸã (pubs.opengroup.org)ã/ãéåžžã®æåãšããŠæ±ããããã¿ãŒã³å ã®*ã¯éå±€ããŸããã§ãããããå¯èœæ§ããããŸããäŸãã°-path "*/backup/*.zip"ã¯ãã©ããã®backupãã£ã¬ã¯ããªé äžã«ãã.zipãã¡ã€ã«ãã«ãããããŸããæ³š: ããå€ãGNUçã§ã¯åçæ©èœãšããŠ-wholename(stackoverflow.com)ãšãããªãã·ã§ã³åããããŸãããã-pathãPOSIXæšæºã«è¿œå ãããããçŸåšã¯-pathã䜿ãã®ãç§»æ€æ§ãé«ãã§ã (stackoverflow.com)ã -
-regex <æ£èŠè¡šçŸ>[Non-POSIX][GNU]: ãã¹å šäœãæå®ããæ£èŠè¡šçŸã«ãããããå Žåã«çã«ãªããŸããããã©ã«ãã§ã¯GNU findã¯Emacsé¢šã®æ£èŠè¡šçŸæ§æã䜿çšããŸãïŒ-regextypeãªãã·ã§ã³ã§Perl颚ãªã©ã«å€æŽå¯èœ [Non-POSIX][GNU]ïŒãäŸãã°ã-regex ".*\.txt$"ãšãããšããã¹å šäœã.txtã§çµãããã®ããæ€çŽ¢ã§ããŸãïŒã.*ããéäžã®ãã£ã¬ã¯ããªãæååã«ãããïŒ (unix.stackexchange.com)ãæ£èŠè¡šçŸã¯ã°ãããã衚çŸåããããŸãããå®è£ äŸåã®ããäºææ§ã«æ³šæããŠãã ããïŒBSDç³»ã§ã-regex(man.freebsd.org)ããããŸããæ£èŠè¡šçŸãšã³ãžã³ãPOSIX EREã«ãªããªã©ã®éãããããŸãïŒã -
-iregex <æ£èŠè¡šçŸ>[Non-POSIX][GNU][BSD]: 倧æåå°æåãåºå¥ããªãæ£èŠè¡šçŸãããã§ãïŒ-regexã®ã±ãŒã¹ã€ã³ã»ã³ã·ãã£ãçïŒã
ãã¡ã€ã«ã®çš®é¡ã»å±æ§ã«é¢ããæ¡ä»¶
-
-type <c>: ãã¡ã€ã«ã®çš®é¡ãcã§ããå Žåã«çã«ãªããŸã (pubs.opengroup.org)ãcã¯ä»¥äžã®1æåã§æå®:f: éåžžã®ãã¡ã€ã« (regular file)d: ãã£ã¬ã¯ããªl: ã·ã³ããªãã¯ãªã³ã¯b: ãããã¯ããã€ã¹c: ãã£ã©ã¯ã¿ããã€ã¹p: åä»ããã€ãïŒFIFOïŒs: ãœã±ãã
äŸ:-type fã§éåžžãã¡ã€ã«ã®ã¿ã-type dã§ãã£ã¬ã¯ããªã®ã¿ã察象ã«ã§ããŸãã
-
-xtype <c>[Non-POSIX][GNU]: ã·ã³ããªãã¯ãªã³ã¯ãããªãã¡ã¬ã³ã¹ããŠçš®é¡ãå€å®ããŸãã (unix.stackexchange.com)éåžžã-type lã§ã·ã³ããªãã¯ãªã³ã¯ãã®ãã®ãæ€çŽ¢ã§ããŸããã-xtypeã䜿ããšãªã³ã¯ã®æãå ãååšããå Žåã¯ãã®çš®é¡ããååšããªãïŒå£ãããªã³ã¯ïŒå Žåã¯ãªã³ã¯èªäœã®çš®é¡lãè¿ããŸããäŸãã°GNU findã§å£ããã·ã³ããªãã¯ãªã³ã¯ã ããæ¢ãã«ã¯-xtype lã䜿çšããŸãïŒãªã³ã¯å ãååšãããã®ã¯-xtypeã§ã¯ããããfãdçãšå€å®ãããããé€å€ãããŸãïŒ (unix.stackexchange.com)ã -
-empty[Non-POSIX][GNU][BSD]: 空ã®ãã¡ã€ã«ããŸãã¯äžèº«ã®ãªããã£ã¬ã¯ããªãæ€çŽ¢ããŸã (man.freebsd.org)ããã¡ã€ã«ãµã€ãºã0ãã€ãã®éåžžãã¡ã€ã«ããäžã«ä»ã®ãã¡ã€ã«ïŒ.ãš..以å€ïŒããªããã£ã¬ã¯ããªã該åœããŸãã -
-perm <mode>: ããŒããã·ã§ã³ïŒã¢ãŒãïŒã«é¢ããæ¡ä»¶ã§ãã<mode>ã®æå®æ¹æ³ã«ãã£ãŠå€å®å 容ãå€ãããŸã (pubs.opengroup.org) (pubs.opengroup.org):<mode>ããã®ãŸãŸïŒé ã«-ã/ãä»ããïŒèšè¿°ãããšããŒããã·ã§ã³ãæ£ç¢ºã«äžèŽããå Žåã«çãšãªããŸããäŸãã°-perm 644ã¯ã¢ãŒããã¡ããã©0644ïŒrw-r--r--ïŒã®ãã¡ã€ã«ã ãã«ãããããŸãã- æ°åã¯8鲿°è¡šèšã§æå®ããŸãïŒå
é ã«
0ãç¡ããŠãéåžž8é²ãšã¿ãªãããŸãããæç¢ºã«ãããã0644ã®ããã«æžãããšãã§ããŸãïŒã - ãããã¯èšå·è¡šèšãå¯èœã§ã (pubs.opengroup.org)ãèšå·è¡šèšã§ã¯ãŸãå
šããã0ããéå§ããäŸãã°
u=rwx,g=rx,o=rã®ããã«chmodé¢šã«æå®ãããšãã®ã¢ãŒãå€ïŒ0754ïŒã«ãªããŸããåç¬æå®æã¯ãã®å®å šäžèŽå€å®ã«ãªããŸãã
- æ°åã¯8鲿°è¡šèšã§æå®ããŸãïŒå
é ã«
<mode>ã®åã«**-ïŒãã€ãã³ïŒ**ãä»ãããšããæå®ããããããæäœéãã¹ãŠã»ãããããŠãããå Žåã«çãšãªããŸã (pubs.opengroup.org)ãããã¯äžçš®ã®ãå å«ãæ¡ä»¶ã§ãïŒã¢ãŒãã®ãã®ä»ã®ãããã¯åããªãïŒã- æ°åäŸ:
-perm -4000ã¯SUIDããããèšå®ãããŠãããã¡ã€ã«ããã¹ãŠæ€çŽ¢ããŸãïŒä»ã®ãããã¯èªç±ïŒã - èšå·äŸ:
-perm -u=wã¯ãææè ã«æžãèŸŒã¿æš©éïŒu+wïŒãä»äžãããŠããããã¡ã€ã«ãæ€çŽ¢ããŸãïŒã°ã«ãŒãããã®ä»ã®æš©éã¯åãããããããã®æžã蟌ã¿ããããä»ããŠãããã©ããã®ã¿å€å®ïŒã
- æ°åäŸ:
- GNUæ¡åŒµãšããŠ
<mode>ã®åã«**/ãä»ããæå®ããããŸã (man.freebsd.org)ïŒFreeBSDçãªã©ã§ãåæ§ã®æ©èœããïŒãããã¯ãæå®ãããããã®ãããã**ãã»ãããããŠãããå Žåã«çãšãªããŸãïŒè«çåçãããïŒãäŸãã°GNU findã§ã¯-perm /222ãšãããšãããããã®ãŠãŒã¶åºåã«æžãèŸŒã¿æš©éããããã¡ã€ã«ããæå³ããŸãïŒolder GNU findã®-perm +modeãšåçã§ããã+ã¯å€ãèšæ³ã®ããçŸåšã¯/æšå¥šïŒã - ç¹æ®ã±ãŒã¹:
-perm -0ã¯åžžã«çïŒå¿ èŠãªãããæå®ãªãïŒã§ãã - 泚æ:
-perm 0644ã®ããã«æå®ãããšãŸãã«ãã®ã¢ãŒãã ãã«äžèŽãããããäŸãã°å®è¡ããããæã€644ãšã¯ç°ãªã655(rw-r-xr-x)ãªã©ã¯ãããããŸããããå°ãªããšã...ãå«ããå Žåã¯-ä»ãã/ä»ãã®åœ¢åŒã䜿ãå¿ èŠããããŸãããŸããäžéšå€ãfindã§ã¯+modeèšæ³ã䜿ãããŸããæ°ããããŒãžã§ã³ã§ã¯éæšå¥šã§ãã
-
-links <n>: ããŒããªã³ã¯ã®æ°ãnã§ããå Žåã«çã«ãªããŸã (pubs.opengroup.org)ãéåžžãã¡ã€ã«ã¯1ïŒèªåèªèº«ã®ãªã³ã¯ã®ã¿ïŒã§ãããè€æ°ã®ãã¹ããåç §ãããããŒããªã³ã¯ã®å Žåãªã³ã¯æ°ãå¢ããŸãããã£ã¬ã¯ããªã¯åºæ¬2以äžïŒèªåã®èŠªããã®åç §..ãªã©ãããããïŒã«ãªããŸãã+ã-ãä»ããŠãããå€ãã»å°ãªãããæå®ã§ããŸããäŸãã°-links +1ã§è€æ°ã®ããŒããªã³ã¯ãæã€ãã¡ã€ã«ãæ¢ããŸãã -
-user <ãŠãŒã¶å>,-group <ã°ã«ãŒãå>: ææè ïŒãªãŒããŒïŒãŠãŒã¶ãŸãã¯ã°ã«ãŒããæå®ããååïŒãŸãã¯å¯Ÿå¿ããIDã®å ŽåãããïŒãšäžèŽããå Žåã«çã«ãªããŸã (pubs.opengroup.org)ãååãæå®ãããå Žåãã·ã¹ãã ã«ãã®ãŠãŒã¶/ã°ã«ãŒããååšããªããã°æ°å€ãšããŠè§£éãããŸã (pubs.opengroup.org)ãäŸ:-user aliceã¯ãªãŒããŒãaliceã®ãã¡ã€ã«ã-group 0ã¯ã°ã«ãŒãID 0ïŒå žåçã«ã¯rootã°ã«ãŒãïŒã®ãã¡ã€ã«ãæ€çŽ¢ããŸãã -
-uid <æ°å€>,-gid <æ°å€>[Non-POSIX][GNU]: ãªãŒããŒã®ãŠãŒã¶IDãŸãã¯ã°ã«ãŒãIDãæå®ããæ°å€ãšäžèŽããå Žåã«çã«ãªããŸãã-user/-groupãšç°ãªãååã§ã¯ãªãIDãçŽæ¥æå®ããçšéã§ãïŒGNU findæ¡åŒµãäžéšBSDç³»ã§ã¯-user/-groupã«æ°å€ãæž¡ãããšã§åæ§ã®åäœïŒã -
-nouser,-nogroup: ææè ãŠãŒã¶ãŸãã¯ã°ã«ãŒãIDã«å¯Ÿå¿ããå®åšã®ãŠãŒã¶/ã°ã«ãŒããååšããªãïŒå€å ãã¡ã€ã«ïŒå Žåã«çãšãªããŸã (pubs.opengroup.org) (pubs.opengroup.org)ãäŸãã°ã·ã¹ãã ãããŠãŒã¶ãåé€ãããåŸã«æ®ã£ããã¡ã€ã«ãªã©ãæ€åºã§ããŸãã -
-readable,-writable,-executable[Non-POSIX][GNU]: ãã¡ã€ã«ãçŸåšã®ãŠãŒã¶ã«ãšã£ãŠèªã¿åãå¯èœ/æžã蟌ã¿å¯èœ/å®è¡å¯èœã§ããå Žåã«çã«ãªããŸããããã¯ã¢ã¯ã»ã¹æš©ãå®éã«ãã§ãã¯ãããã¹ãã§ã-permã«ããåçŽãªã¢ãŒããããå€å®ãšã¯ç°ãªããACLãªã©OSã®å®éã®ã¢ã¯ã»ã¹å¶åŸ¡ãèæ ®ããŸãã -
-inum <inodeçªå·>[Non-POSIX][GNU][BSD]: inodeçªå·ãæå®ããå€ãšçãããã¡ã€ã«ãæ€çŽ¢ããŸããls -iã§è¡šç€ºãããinodeçªå·ã䜿ã£ãŠããã®inodeãæã€å šãŠã®ãã¹ïŒããŒããªã³ã¯ãªã©ïŒãèŠã€ããã®ã«å©çšå¯èœã§ãã -
-samefile <ãã¹>[Non-POSIX][GNU]:<ãã¹>ãšåãinodeãæããŠãããã¡ã€ã«ãæ€çŽ¢ããŸãïŒããªãã¡<ãã¹>ãšããŒããªã³ã¯é¢ä¿ã«ãããã¡ã€ã«ãå šãŠåæïŒãäŸãã°find . -samefile ./example.txtãšãããšexample.txtã®ä»ã«åãinodeãå ±æããå¥åã®ãã¡ã€ã«ãããã°èŠã€ãããŸãã
æå»ïŒã¿ã€ã ã¹ã¿ã³ãïŒã«é¢ããæ¡ä»¶
-
-mtime <n>: æçµä¿®æ£æå»ïŒå 容ãæåŸã«å€æŽãããæ¥æïŒããã®çµéæ¥æ°ã§å€å®ããŸã (pubs.opengroup.org)ãnã¯24æéåäœã®æ¥æ°ã§ããã¡ã€ã«ã®ä¿®æ£æå»ãšfindå®è¡æå»ãšã®å·®ãåãäžãæŽæ°æ¥ã«ãªã£ãå€ãšæ¯èŒãããŸã (pubs.opengroup.org)ã-mtime 0ã¯ãå®è¡æ¥ãšåãæ¥ä»å ã«ä¿®æ£ããããã¡ã€ã«ãïŒçŽè¿24æé以å ïŒãæå³ããŸãã-mtime 1ã¯ã1æ¥åã¡ããã©ïœ2æ¥åæªæºã«ä¿®æ£ãïŒ24ïœ47æéåïŒã®ãã¡ã€ã«ã-mtime +7ã¯ã7æ¥ãããåïŒ8æ¥ä»¥äžåïŒã«ä¿®æ£ãããããã¡ã€ã«ã-mtime -1ã¯ãéå»24æé以å ã«ä¿®æ£ãããããã¡ã€ã«ã衚ããŸãã
+ã¯ããã倧ããïŒçµéæ¥æ°ãå€ã = å€ãïŒãã-ã¯ãããå°ãªãïŒæ¥æ°ãå°ãªã = æ°ããïŒããæ°å€åç¬ã¯ã¡ããã©ãã®æ¥æ°ã«çžåœããç¯å²ãæããŸã (pubs.opengroup.org)ã
-
-atime <n>: æçµã¢ã¯ã»ã¹æå»ïŒèªã¿åããªã©ã§æåŸã«ã¢ã¯ã»ã¹ãããæ¥æïŒã«ã€ããŠ-mtimeãšåæ§ã®æå®æ¹æ³ã§å€å®ããŸã (pubs.opengroup.org)ã -
-ctime <n>: ãã¡ã€ã«ç¶æ 倿޿å»ïŒinodeèªäœã倿Žãããæå»ãããŒããã·ã§ã³å€æŽã»ææè 倿Žããªã³ã¯æ°å€åãªã©å«ãïŒã«ã€ããŠå€å®ããŸã (pubs.opengroup.org)ã-ctimeã¯ã屿§ãŸãã¯å 容ãå€åããæå»ããèŠããã®ã§ãå 容倿Žãå«ãå Žåã¯-mtimeãšåãã«ãªããŸãããææè 倿Žã®ã¿ã®å Žåãªã©-mtimeã«ã¯çŸããªã倿Žãæ€åºã§ããŸãã -
-mmin <å>,-amin <å>,-cmin <å>[Non-POSIX][GNU][BSD]: äžèšã®åæå»ã«ã€ããŠååäœã§å€å®ããŸãã-mmin -30ãªããéå»30å以å ã«æŽæ°ããããã¡ã€ã«ãã-amin +1440ãªããæçµã¢ã¯ã»ã¹ã24æéããåã®ãã¡ã€ã«ããšçްããªæå®ãå¯èœã§ãã -
-newer <åºæºãã¡ã€ã«>: ä¿®æ£æå»ãæå®ãããã¡ã€ã«ããæ°ããå Žåã«çã«ãªããŸã (unix.stackexchange.com)ãäŸãã°-newer target.txtã¯ãtarget.txtããåŸã«ä¿®æ£ããããã¡ã€ã«ããæ¢ããŸãã- å¿çš:
-newer fileA ! -newer fileBãšçµã¿åãããã°ãfileAããæ°ãããfileBããå€ãïŒfileAïœfileBã®éã«å€æŽãããïŒããã¡ã€ã«ãæ¢ãããšãã§ããŸãã
- å¿çš:
-
-anewer <åºæºãã¡ã€ã«>,-cnewer <åºæºãã¡ã€ã«>[Non-POSIX][GNU][BSD]: ã¢ã¯ã»ã¹æå»ãŸãã¯ç¶æ 倿޿å»ãåºæºãã¡ã€ã«ããæ°ããå Žåã«çãšãªããŸãïŒFreeBSDçã§ã¯-anewerã¯-neweramã®ãšã€ãªã¢ã¹ (man.freebsd.org)ïŒãGNU findã§ã¯ä»£ããã«åŸè¿°ã®-newerXYã§çްããæå®å¯èœã§ãã -
-newerXY <åºæºãã¡ã€ã«>[Non-POSIX][GNU]: åºæºãã¡ã€ã«ã®ããçš®ã®æå»ãšãæ€çŽ¢å¯Ÿè±¡ãã¡ã€ã«ã®å¥çš®ã®æå»ãæ¯èŒã§ããŸããXã¯æ€çŽ¢å¯Ÿè±¡ãã¡ã€ã«ã®æå»ãYã¯åºæºãã¡ã€ã«ã®æå»ã衚ã1æåïŒa=ã¢ã¯ã»ã¹,c=ç¶æ 倿Ž,m=ä¿®æ£ïŒã§ããäŸãã°-newermt <æ¥ææåå>ã®ããã«äœ¿ããšçŸåšæå»ã§ã¯ãªãæå®ããæ¥æïŒYãtã®å Žåã¯åºæºãæå®æ¥æãšãªãïŒãšæ¯èŒããããšãã§ããŸãããã®æ©èœã䜿ãã°ã2023-01-01以éã«æŽæ°ããããã¡ã€ã«ãã-newermt "2023-01-01"ã§æ¢ãããšãã£ãæå®ãå¯èœã§ãã**ãæ³šã**æ¥ææååã®è§£éã¯å®è£ äŸåã§ãGNU findã§ã¯çŸåšãã±ãŒã«ã®æ¥æåœ¢åŒãYYYY-MM-DDçãåãä»ããŸãã
è«çæŒç®åãšåŒã®ã°ã«ãŒãå
-
! <åŒ>ãŸãã¯-not <åŒ>[Non-POSIX]: <åŒ>ã®æ¡ä»¶ãè«çåŠå®ïŒNOTïŒããŸãã! -type dã®ããã«äœ¿ãã°ããã£ã¬ã¯ããªã§ã¯ãªãããã®ãæå³ããŸãã-notã¯GNUãBSDã§äœ¿ããå¥è¡šèšã§ãããPOSIXäºææ§ãèãããšåé æŒç®å!ã®æ¹ãè¯ãã§ãããïŒãã ã!ãã·ã§ã«ã§çŽæ¥äœ¿ããšå±¥æŽå±éãšè¡çªããå Žåãããããããã©ãã«ãããå Žåã¯\!ãšãšã¹ã±ãŒãããã-notã§ä»£çšããŸãïŒã -
-a(AND),-o(OR): è«çç©ã»è«çåãæå®ããŸããfindã®åŒã§ã¯**ããã©ã«ãã§é£æ¥ããæ¡ä»¶ã¯ANDïŒè«çç©ïŒãšããŠæ±ãããŸã (pubs.opengroup.org)ããã®ããéåžžã¯-aãæç€ºããªããŠãããã§ãããè€éãªåŒã§ã¯æç€ºããæ¹ãèªã¿ãããå ŽåããããŸãã-oã¯è«çåïŒORïŒã衚ããåã®æ¡ä»¶ãŸãã¯åŸã®æ¡ä»¶ã®ã©ã¡ãããçãªãããããšã¿ãªããŸããåªå é äœã«æ³šæ: ANDã¯ORããã匷ãçµåããïŒANDã®æ¹ãå ã«è©äŸ¡ãããïŒãããå¿ èŠã«å¿ããŠ(ãš)**ã§ã°ã«ãŒãåããŸã (unix.stackexchange.com)ã -
(<åŒ1>-o<åŒ2>): ã«ãã³ã䜿ã£ãŠåŒã®ã°ã«ãŒãåãã§ããŸããã·ã§ã«ã«è§£éãããªããã**\(ãš\)ã®ããã«ããã¯ã¹ã©ãã·ã¥ã§ãšã¹ã±ãŒãããããåŒçšç¬Šã§å²ãã§ãã ãããäŸãã°find . \( -name "*.c" -o -name "*.h" \) -type fã¯ãæ¡åŒµåã.cãŸãã¯.hã®éåžžãã¡ã€ã«**ããæ¢ããŸããã°ã«ãŒãåããªããš-oã®åªå é äœã«ãã£ãŠæå³ããªãè«çåŒã«ãªãåŸãã®ã§ãè€æ°æ¡ä»¶ã®çµã¿åããã§ã¯ç©æ¥µçã«()ã䜿ãã®ããã¹ããã©ã¯ãã£ã¹ã§ãã
ã¢ã¯ã·ã§ã³ïŒæ€çŽ¢çµæã«å¯ŸããåŠçïŒ
-
-print: ããããããã¹ïŒãã¡ã€ã«åïŒãæšæºåºåã«è¡šç€ºããŸããåžžã«çãè¿ããããã©ã«ãã§ã¯åçµæãæ¹è¡åºåãã§è¡šç€ºããŸã (pubs.opengroup.org)ãã»ãšãã©ã®findå®è£ ã§ã¯æç€ºçã«åŒãæå®ããªãå Žåãèªåçã«-printãä»å ãããŸã (pubs.opengroup.org)ããŸããæç€ºããåŒã«-exec,-ok,-printã®ããããå«ãŸããªãå ŽåããæåŸã«èªåçã«-printãè£ãããŸã (pubs.opengroup.org)ããã®ä»æ§ã«ãããfind <dir>ãšããã ãã§ã¯äœã衚瀺ãããªãããšãã£ãåå¿è ã®ãã¹ãé²ãã§ããŸã (pubs.opengroup.org)ã -
-print0[Non-POSIX][GNU][BSD]: ããããããã¹åã®åŸã«**ãã«æåïŒ\0ïŒ**ãåºåããŸã (pubs.opengroup.org)ãåçµæãæ¹è¡ã§ã¯ãªããã«æåã§åºåãããããã¡ã€ã«åã«æ¹è¡ã空çœãå«ãŸããŠããŠãå®å šã«åºåããèªèã§ããŸããäž»ã«xargs -0ãªã©ãšçµã¿åãããŠå€§éã®ãã¹ãå®å šã«å¥ããã°ã©ã ã«æž¡ãçšéã§é »çšãããŸããæ³š: POSIX仿§ã«ã¯ãªãã£ãæ¡åŒµã§ãããçŸåšå€ãã®å®è£ ã§ãµããŒããããŠããã2024幎çPOSIXã«ã远å ãããŸãã (pubs.opengroup.org)ã -
-exec <ã³ãã³ã> {} \;: ãããããåãã¡ã€ã«ã«ã€ããŠãæå®ããå€éšã³ãã³ããå®è¡ããŸã (pubs.opengroup.org)ã{}ã¯ãã¬ãŒã¹ãã«ãã§ãèŠã€ãã£ããã¡ã€ã«ã®ãã¹ã«çœ®ãæããããŸããfindã¯{}ãå«ãã³ãã³ãã©ã€ã³ãçµã¿ç«ãŠã\;ãçŸãããŸã§ã1ã€ã®ã³ãã³ããšããŠå®è¡ããŸããäŸãã°-exec rm {} \;ã¯åèŠã€ãã£ããã¡ã€ã«ã«å¯Ÿãrm <ãã®ãã¡ã€ã«>ãå®è¡ããŠåé€ããŸãã-exec ... {} +[Non-POSIX]: ã³ãã³ãå®è¡ã®åºåãã;ã§ã¯ãªã+ã§çµãããããšãå¯èœãªéãè€æ°ã®çµæããŸãšããŠäžåºŠã®ã³ãã³ãå®è¡ã§åŠçããŸã (pubs.opengroup.org)ãããã¯[GNU]ã[BSD]å®è£ ã§ãµããŒããããPOSIXèŠæ Œã«ãçµã¿èŸŒãŸããŸããïŒå€ãUNIXã§ã¯æªå¯Ÿå¿ã®å ŽåããããŸãïŒãäŸãã°-exec echo {} +ãšãããšãèŠã€ãã£ãå šãã¡ã€ã«ãã¹ã空çœåºåãã§äžŠã¹ãŠäžåã®echoã³ãã³ãã«æž¡ããŸãã倧éã®ãã¡ã€ã«ã«å¯ŸããŠäžã€äžã€å®è¡ããããé«éã§ãã³ãã³ãã©ã€ã³é·ãã·ã¹ãã äžéãè¶ ããªãç¯å²ã§ãŸãšããããŸããæ³šæ:+ã䜿ãå Žåã¯ã³ãã³ãã®æåŸã®åŒæ°ã«{}ã眮ããªããã°ãªããŸããïŒfindã{}ãå±éããŠæåŸã«+ãæ¥ã圢åŒã®ã¿èš±å®¹ïŒã-execã§èµ·åãããã³ãã³ãã®ã«ã¬ã³ããã£ã¬ã¯ããªã¯ãfindãå®è¡ãããšãã®ã«ã¬ã³ããã£ã¬ã¯ããªãšåãã§ã (pubs.opengroup.org)ïŒfind .ããŠããå Žåã¯ãã®.ã«çžåœãããã£ã¬ã¯ããªã§ã¯ãªããfindãåŒãã å ŽæïŒãã³ãã³ãå ã§çžå¯Ÿãã¹ãæ±ãéã¯æ³šæãå¿ èŠã§ãã
-
-execdir <ã³ãã³ã> {} \;[Non-POSIX][GNU][BSD]:-execã«äŒŒãŠããŸãããå®è¡ããã³ãã³ãã®ã«ã¬ã³ããã£ã¬ã¯ããªã察象ãã¡ã€ã«ã®ååšãããã£ã¬ã¯ããªã«å€æŽããŠããå®è¡ããŸã (man.freebsd.org)ããŸã{}ã§æž¡ããããã¹ã¯ãã®ãã£ã¬ã¯ããªå ã§ã®çžå¯Ÿãã¹ïŒå é ã«./ãä»ãïŒã«ãªããŸãã-execdirã¯-execããã»ãã¥ã¢ã§ãç¹ã«{} +ã§å€æ°ã®ãã¡ã€ã«ãæ±ãå Žåã«ã³ãã³ãåŒæ°ã®äžéãè¶ ãã«ããå©ç¹ããããŸãã- äŸ:
-execdir sh -c 'echo "$PWD ã§ $1 ãåŠçäž"' sh {} \;ãšãããšãåãã¡ã€ã«ã®ãããã£ã¬ã¯ããªã«å ¥ããã®ãã¹ã§ã¡ãã»ãŒãžãåºåã§ããŸãã-execã§ã¯ãã¹ãŠèµ·åå ã®ãã£ã¬ã¯ããªã§å®è¡ãããããããã®éãã¯é¡èã§ãã -ok,-okdir:-exec/-execdirã®ã€ã³ã¿ã©ã¯ãã£ãçã§ããåäœã¯åæ§ã§ãããå®è¡ããåã«ãŠãŒã¶ã«<cmd>?ã®ããã«å®è¡ç¢ºèªãæ±ããŸã (pubs.opengroup.org)ãyïŒyesïŒãšå ¥åãããå Žåã®ã¿ã³ãã³ããå®è¡ããnãªãã¹ãããããŸãã誀ã£ãŠåé€ããŠããŸãå±éºãé¿ãããæãªã©ã«æçšã§ãããèªååã«ã¯äžåãã§ããæ³š:-okdirãGNUããã³BSDæ¡åŒµã§ã+ã«ããäžæ¬å®è¡ã¯ãµããŒããããŸããïŒå¿ ã1ä»¶ãã€ç¢ºèªïŒã
- äŸ:
-
-delete[Non-POSIX][GNU][BSD]: 該åœãã¡ã€ã«ãå³åº§ã«åé€ããŸã (man.freebsd.org)ã-exec rm {} \;ãšäŒŒãŠããŸãããfindãå èµåäœãšããŠè¡ãããå¹ççã§ããåžžã«çãè¿ãããã£ã¬ã¯ããªã®å Žåã¯ç©ºã§ãªããã°åé€ã«å€±æããŸã (man.freebsd.org)ïŒå®å šã®ãããrm -rã®ãããªæåã¯ããŸããïŒã泚æ:-deleteã¯åŒã®äžã§åºçŸããæç¹ã§å³åé€ãè¡ããããä»ã®æ¡ä»¶ãšçµã¿åãããå Žåã¯æåŸã«çœ®ãã®ãååã§ã (man.freebsd.org)ãäŸãã°-delete -type fã®é ã ãšã-deleteãå ã«å®è¡ãããã£ã¬ã¯ããªãåé€ããããšããŠæãã¬çµæãæãå¯èœæ§ããããŸãã-deleteäœ¿çšæã¯-depthãªãã·ã§ã³ãèªåçã«æå¹ã«ãªãïŒGNU findã®å ŽåïŒããã-pruneãšã®äœµçšãã§ããŸãã (man.freebsd.org)ã -
-ls[Non-POSIX][GNU][BSD]: 該åœãã¡ã€ã«ãls -dilsã«äŒŒããã©ãŒãããã§1è¡ãã€è¡šç€ºããŸããåºåã«ã¯inodeçªå·ããããã¯ãµã€ãºãããŒããã·ã§ã³ããªã³ã¯æ°ãææè ãã°ã«ãŒãããµã€ãºãæ¥æããã¹ãå«ãŸããŸããäŸãã°:$ find . -maxdepth 1 -type f -ls 26 0 -rw-r--r-- 1 sandbox sandbox 0 Aug 27 00:09 ./file1.txtãšåºåãããŸãã
-lsã¯ãããã°ãæ€çŽ¢çµæã®è©³çŽ°ç¢ºèªã«äŸ¿å©ã§ããå 容圢åŒãåºå®ã®ãããã«ã¹ã¿ãã€ãºãããå Žåã¯æ¬¡ã®-printfã䜿ããšè¯ãã§ãããã -
-fls <ãã¡ã€ã«>[Non-POSIX][GNU]:-lsãšåçã®å å®¹ãæšæºåºåã§ã¯ãªãæå®ãã¡ã€ã«ã«åºåããŸãããã°ãçŽæ¥ãã¡ã€ã«ä¿åãããå Žåã«äœ¿ããŸãã -
-printf "<æžåŒ>"[Non-POSIX][GNU]:printf(3)ã«äŒŒãæžåŒæå®ã§åºåãå¶åŸ¡ã§ããŸããäŸãã°-printf "%p %s bytes\n"ãšããã°**ãã¹(%p)ãšãµã€ãº(%s)**ã衚瀺ããããšãã£ãèªç±ãªãã©ãŒããããå¯èœã§ããäž»ãªæžåŒæå®ïŒ%èšå·ïŒã«ã¯ä»¥äžããããŸã:%p: ãã¡ã€ã«ã®ãã¹ïŒæ€çŽ¢éå§ãã£ã¬ã¯ããªããã®çžå¯Ÿãã¹ïŒ%f: ãã¡ã€ã«åïŒæçµã³ã³ããŒãã³ãã®ã¿ïŒ%H: æ€çŽ¢éå§ãã¹%h: ãã¡ã€ã«ã®èŠªãã£ã¬ã¯ããªïŒæ€çŽ¢éå§ç¹ããã®çžå¯Ÿãã¹ïŒ%m: ããŒããã·ã§ã³ã8鲿°ã§ïŒäŸ: 644ïŒ%M: ããŒããã·ã§ã³ãls -l圢åŒã§ïŒäŸ:-rw-r--r--ïŒ%u: ææè ã®ãŠãŒã¶IDïŒæ°å€ïŒã%U: ææè å%g: ã°ã«ãŒãIDã%G: ã°ã«ãŒãå%s: ãã¡ã€ã«ãµã€ãºïŒãã€ãïŒ%t: æçµä¿®æ£æå»ãyyyy-mm-dd HH:MM:SS +TZ圢åŒã§ã%Td,%Tbãªã©çްããæå®ãå¯èœ%T@: æçµä¿®æ£æå»ãUNIXãšããã¯ç§ã§ïŒæµ®åå°æ°ç¹ïŒ\n,\tãªã©: æ¹è¡ãã¿ããªã©ã®ãšã¹ã±ãŒãã·ãŒã±ã³ã¹
ãªã©éåžžã«å€åœ©ã§ãã-printfã¯æ¹è¡ãèªåã§å ¥ããªãéãåºåãæ¹è¡ããªãç¹ã«æ³šæããŠãã ããïŒå¿ èŠãªãæžåŒã®æ«å°Ÿã«\nãå ¥ããïŒã-printfã¯POSIXæšæºå€ã®GNUæ¡åŒµãªã®ã§ãç§»æ€æ§ãå¿ èŠãªå Žé¢ã§ã¯äœ¿ãéããªãããã«ããŸãããïŒmacOSæšæºã®BSD findã«ã¯ãããŸãã [macOS]ïŒã
以äžãäž»ãªãªãã·ã§ã³ã»åŒã®äžèЧã§ããæ¬¡ç« ã§ã¯å®éã®äœ¿çšäŸã瀺ããªããåæ©èœã®äœ¿ãæ¹ãããå ·äœçã«èª¬æããŸãã
䜿çšäŸïŒåºæ¬ããé«åºŠãªäŸãŸã§ïŒ
以äžã§ã¯ãæ¶ç©ºã®ãã£ã¬ã¯ããªããªãŒãtestdirããäŸã«æããç®çå¥ã«findã³ãã³ãã®äœ¿çšäŸãšãã®çµæïŒäºæ³ãããåºåãåäœïŒã瀺ããŸããåäŸã§ã¯ãäžèšã§èª¬æãããã¹ãŠã®äž»ãªãªãã·ã§ã³ãæ©èœãç¶²çŸ
ããããã«åãäžããŠããŸãã
ãŸããäŸãšããŠçšãããã£ã¬ã¯ããªæ§æãç°¡åã«ç€ºããŸãïŒtestdir以äžã«ããã€ãã®ãã¡ã€ã«ã»ãã©ã«ããã·ã³ããªãã¯ãªã³ã¯ãé
眮ïŒ:
testdir/
âââ file1.txt (ãµã€ãº0ãã€ãã®ç©ºãã¡ã€ã«)
âââ file2.log (åé€å¯Ÿè±¡ã®ãã°ãã¡ã€ã«; å
容"hello" 6ãã€ã)
âââ subdir/ (ãµããã£ã¬ã¯ããª)
â âââ a.txt (å
容"world" 6ãã€ã)
â âââ b.sh (ãµã€ãº0ãã€ãã®ç©ºãã¡ã€ã«)
âââ skipme/ (æ¢çŽ¢ããé€å€ãããã£ã¬ã¯ããªäŸ)
â âââ secret.txt (å
容"top secret" 11ãã€ã; ãã®ä»ãŠãŒã¶æžãèŸŒã¿æš©éãã)
âââ emptydir/ (äžèº«ã®ãªã空ãã£ã¬ã¯ããª)
âââ link -> subdir/a.txt (ãã¡ã€ã«a.txtãžã®ã·ã³ããªãã¯ãªã³ã¯)
âââ extlink -> /etc/passwd (ããªãŒå€ã®ãã¹ãæãã·ã³ããªãã¯ãªã³ã¯)
âââ brokenlink -> missing (ååšããªããã¹ãæãå£ããã·ã³ããªãã¯ãªã³ã¯)
1. ãã¡ã€ã«åãã¿ãŒã³ã§æ€çŽ¢ããïŒ-name, -inameïŒ
-nameã䜿ã£ãŠç¹å®ã®ãã¿ãŒã³ã«ããããããã¡ã€ã«ãæ€çŽ¢ã§ããŸããã¯ã€ã«ãã«ãŒãã¯ã·ã§ã«ã«è§£éãããªãããã¯ã©ãŒãããã®ããã€ã³ãã§ãã
# ã«ã¬ã³ããã£ã¬ã¯ããªé
äžã§æ¡åŒµåã".txt"ã®ãã¡ã€ã«ãæ€çŽ¢
$ find testdir -name "*.txt" -print
testdir/subdir/a.txt
testdir/skipme/secret.txt
testdir/file1.txt
testdir以äžã®.txtãã¡ã€ã«ïŒå€§æåå°æååºå¥ïŒãšããŠãa.txt, secret.txt, file1.txtãèŠã€ãããŸãã
# 倧æåå°æåãç¡èŠããŠ"FILE"ãšããååãæ¢ã
$ find testdir -iname "FILE*.TXT" -print
testdir/file1.txt
-inameãªã®ã§file1.txtã®ããã«å°æåã§ããããããŠããŸãããã®äŸã§ã¯"FILE*.TXT"ã«å¯Ÿãfile1.txtãèŠã€ãããŸããã
2. ãã¹å
šäœãæ£èŠè¡šçŸã§æ€çŽ¢ããïŒ-path, -regexïŒ
# "subdir"ãã£ã¬ã¯ããªé
äžã®å
šãã¡ã€ã«ãæ€çŽ¢
$ find testdir -path "testdir/subdir/*" -print
testdir/subdir/a.txt
testdir/subdir/b.sh
-path "testdir/subdir/*"ã¯testdir/subdir/以äžã®éå±€ïŒ*ã¯subdir/å
ã®ä»»æã®ãã¡ã€ã«åéšåã«ãããïŒã«éå®ããŠçµæã衚瀺ããŸããsubdirèªèº«ã¯*ã®åŸã«æåãç¡ãããããããããå
éšã®2ãã¡ã€ã«ã ãã衚瀺ãããŠããŸãã
# æ£èŠè¡šçŸã§".txt"ã§çµãããã¹ãæ€çŽ¢ (GNUæ¡åŒµ)
$ find testdir -regex ".*\.txt$" -print
testdir/subdir/a.txt
testdir/skipme/secret.txt
testdir/file1.txt
ãã¹å
šäœã«å¯ŸããŠæ£èŠè¡šçŸ.*\.txt$ïŒãä»»æã®æååã®åŸã«".txt"ã§çµäºãïŒãé©çšãã.txtã§çµãããã¹ãŠã®ãã¡ã€ã«ãæ€çŽ¢ã§ããŠããŸããçµæã¯-name "*.txt"ã®å Žåãšåãã§ãããæ£èŠè¡šçŸãªãäŸãã°^testdir\/[A-Za-z0-9]+\.txt$ã®ããã«çްããªãããæ¡ä»¶ãèšè¿°å¯èœã§ãã
3. çš®é¡ã§æ€çŽ¢ããïŒ-type, -xtypeïŒ
# ã·ã³ããªãã¯ãªã³ã¯ã®ã¿ãæ€çŽ¢
$ find testdir -type l -print
testdir/link
testdir/extlink
testdir/brokenlink
-type lã§ã·ã³ããªãã¯ãªã³ã¯3ã€ïŒlink, extlink, brokenlinkïŒãèŠã€ãããŸããã
# å£ããã·ã³ããªãã¯ãªã³ã¯ãæ€çŽ¢ (GNUæ¡åŒµ)
$ find testdir -xtype l -print
testdir/brokenlink
-xtype lã«ãããªã³ã¯å
ãè©äŸ¡ããäžã§ã¿ã€ããå€å®ããããããªã³ã¯å
ãååšããlinkãextlinkã¯ããããéåžžãã¡ã€ã«ãšããŠæ±ãã-xtype lã§ã¯é€å€ãããŸããçµæãšããŠãªã³ã¯åãã®brokenlinkã ãããããããŸããã
# ãã£ã¬ã¯ããªã®ã¿ãæ€çŽ¢
$ find testdir -type d -print
testdir
testdir/subdir
testdir/skipme
testdir/emptydir
ãã£ã¬ã¯ããªïŒ-type dïŒãšããŠãéå§ç¹testdirèªèº«ãš3ã€ã®ãµããã£ã¬ã¯ããªã衚瀺ãããŸããfindã¯éåžžãéå§ãã¹èªèº«ãæ¡ä»¶ã«å«ããŠãã§ãã¯ããŸãããã®äŸã§ã¯testdirããã£ã¬ã¯ããªãªã®ã§çµæã«å«ãŸããŠããŸãã
4. ããŒããã·ã§ã³ãææè
ã§æ€çŽ¢ããïŒ-perm, -user/-groupïŒ
# ãã®ä»ãŠãŒã¶ã«æžãèŸŒã¿æš©éããããã¡ã€ã«ãæ€çŽ¢
$ find testdir -type f -perm -o=w -print
testdir/skipme/secret.txt
-perm -o=wã«ãããã¢ãŒããããã§ãothersã«æžã蟌ã¿(w)èš±å¯ããä»ããŠãããã¡ã€ã«ãæ€çŽ¢ããŠããŸããäŸã§ã¯secret.txtã該åœã衚瀺ãããŸããïŒsecret.txtã¯ã¢ãŒã-rw-r--rw-ã§othersã®wããããç«ã£ãŠããŸãïŒãã·ã³ããªãã¯ãªã³ã¯ãã¢ãŒãäžã¯777æ±ãã§ããã-type fã§éåžžãã¡ã€ã«ã«éå®ããŠãããããªã³ã¯ã¯é€å€ãããŠããŸãã
# ããŒããã·ã§ã³ãæ£ç¢ºã«644ã®ãã¡ã€ã«ãæ€çŽ¢
$ find testdir -type f -perm 0644 -print
testdir/subdir/a.txt
testdir/subdir/b.sh
testdir/file1.txt
-perm 0644ã¯ã¢ãŒããå®å
šã«0644ãšäžèŽãããã¡ã€ã«ãæ¢ããŸããäžèš3ãã¡ã€ã«ã¯ããããrw-r--r--(644)ã§ããäžèŽããŸãããsecret.txtã¯othersã«æžãèŸŒã¿æš©éããããã0646ãšãªãããã®æ¡ä»¶ã§ã¯ãããããŸããã
# ææè
ãsandboxãŠãŒã¶ã®ãã¡ã€ã«ãæ€çŽ¢
$ find testdir -user sandbox -print
testdir/subdir/a.txt
testdir/subdir/b.sh
testdir/skipme/secret.txt
testdir/file1.txt
ïŒäžèšã¯åºåäŸã§ããå®éã«ã¯ç°å¢ã«ãã£ãŠãŠãŒã¶åã¯ç°ãªããŸããïŒ-user <åå>ã§ææè
åãæå®ã§ããŸããããã§ã¯âsandboxâãŠãŒã¶ææã®ãã¡ã€ã«ã®ã¿ã衚瀺ããŠããŸãã-groupãåæ§ã§ããååã§ã¯ãªãæ°å€IDãçŽæ¥æå®ããå Žåã¯ç°å¢ã«ãããŸãããGNU findãªã-uid/-gidããããã¯-user '#1000'ã®ããã«ååã®ä»£ããã«#ID圢åŒã§æå®ããæ¹æ³ããããŸãã
5. ãµã€ãºã§æ€çŽ¢ããïŒ-sizeïŒ
# ãµã€ãºã0ãã€ãã®ç©ºãã¡ã€ã«ãæ€çŽ¢
$ find testdir -type f -size 0 -print
testdir/subdir/b.sh
testdir/file1.txt
-size 0ã¯512ãã€ããããã¯æ°ã§0ãšããæå³ãªã®ã§ãå®è³ªãµã€ãº0ãã€ãã®ãã¡ã€ã«ãæããŸãïŒ512ãã€ãæªæºã¯åãäžããŠ1ãããã¯ã«ãªãããã0ãããã¯=0ãã€ãïŒãçµæãšããŠç©ºã®b.shãšfile1.txtãèŠã€ãããŸããã
# ãµã€ãºã5ãã€ããè¶
ãããã¡ã€ã«ãæ€çŽ¢ïŒåäœæå®ã®äŸïŒ
$ find testdir -type f -size +5c -print
testdir/subdir/a.txt
testdir/skipme/secret.txt
-size +5cã¯5ãã€ããã倧ããïŒ+5ïŒãã¡ã€ã«ãæå³ããŸãïŒcã¯ãã€ãåäœæå®ïŒãa.txt(6ãã€ã)ãšsecret.txt(11ãã€ã)ãæ¡ä»¶ãæºãã衚瀺ãããŸããããªã-size 100kã®ããã«**kïŒãããã€ã=1024ãã€ãïŒãM**ïŒã¡ã¬ãã€ã=1048576ãã€ãïŒãšãã£ãåäœã䜿ããŸã (man.freebsd.org)ïŒããã¯GNU/BSDæ¡åŒµã§ãïŒãäŸãã°-size +1Mã¯1MiBãã倧ãããã¡ã€ã«ã®æ€çŽ¢ã§ãã
6. æŽæ°æå»ã§æ€çŽ¢ããïŒ-mtime, -mmin, -newerãªã©ïŒ
# éå»1æ¥ä»¥å
ã«å€æŽããããã¡ã€ã«ãæ€çŽ¢
$ find testdir -mtime -1 -print
testdir/subdir/a.txt
testdir/subdir/b.sh
testdir/skipme/secret.txt
testdir/file2.log
ïŒãã®äŸã§ã¯ãfile2.logã¯æè¿äœæããããã°ãã¡ã€ã«ãšããæ³å®ã§ããïŒ-mtime -1ã¯24æé以å
ã«ä¿®æ£ããããã¡ã€ã«ãæããçŽè¿ã§å
容ã倿Žã»äœæããããã¡ã€ã«å
šãŠã衚瀺ãããŠããŸãã
# 7æ¥ããåã«å€æŽããããã¡ã€ã«ãæ€çŽ¢
$ find testdir -mtime +7 -print
testdir/file1.txt
ïŒfile1.txtã¯æå³çã«æŽæ°æ¥æãé廿¥ã«èšå®ãããã®ãšããŸããïŒ-mtime +7ã¯8æ¥ä»¥äžåã«ä¿®æ£ããããã¡ã€ã«ã§ããã®äŸã§ã¯file1.txtã®ã¿ã該åœããŸãããããã¯ã¢ããçšéãªã©ã§ã1é±éä»¥äžæŽæ°ããªããã¡ã€ã«ããèŠã€ããå Žåã«æçšã§ãã
# åºæºãã¡ã€ã«ããæ°ãããã¡ã€ã«ãæ€çŽ¢
$ find testdir -newer testdir/file1.txt -print
testdir/subdir/a.txt
testdir/subdir/b.sh
testdir/skipme/secret.txt
file1.txtããæ°ãã倿Žããããã¡ã€ã«ãæ¢ããŠããŸããfile1.txtãå€ãæ¥æãªã®ã§ãä»ã®3ãã¡ã€ã«ã衚瀺ãããŸããã-newerã¯ç¹å®ã®ãã¡ã€ã«ãåºæºã«ã§ããã®ã§ããããããã¯ã¢ãããã¡ã€ã«ããæŽæ°ãããŠãããã¡ã€ã«ãæŽãåºãããããªçšéã«äœ¿ããŸãã
# ååäœ: éå»10å以å
ã«å€æŽããããã¡ã€ã«ãæ€çŽ¢
$ find testdir -mmin -10 -type f -print
... ïŒæè¿ç·šéããããã¡ã€ã«ãããã°è¡šç€ºïŒ ...
-mmin -10ã®ããã«ååäœã§ãæå®ã§ããŸãïŒGNU/BSDæ¡åŒµïŒãcronã§çŽè¿æ°åã®æŽæ°ãç£èŠãããããå Žåãªã©ã«äŸ¿å©ã§ããåæ§ã«-aminã-cminãå©çšã§ããŸãã
7. è€éãªæ¡ä»¶ã®çµã¿åããïŒè«çæŒç®ãš-pruneïŒ
# ".git"ãã£ã¬ã¯ããªãé€å€ããŠå
šãŠã®ãœãŒã¹ã³ãŒããæ€çŽ¢
$ find . -path "./.git" -prune -o -name "*.c" -o -name "*.h" -print
./main.c
./include/common.h
... ïŒ.git以äžã¯é€å€ãããŠããŸãïŒ ...
äžèšã¯ã«ã¬ã³ããã£ã¬ã¯ããªä»¥äžã§Git管çã«äœ¿ããã.gitãã©ã«ããæ¢çŽ¢ããé€å€ãïŒ-pruneïŒãæ®ãããæ¡åŒµå.cãŸãã¯.hã®ãã¡ã€ã«ã衚瀺ããäŸã§ãããã€ã³ãã¯-pruneãšä»æ¡ä»¶ã**-o (OR)ã§ç¹ã**ã-pruneãé©çšããéšåã«ã¯ãã®å Žã§ããããããçïŒãã£ã¬ã¯ããªæ¢çŽ¢ãäžæ¢ïŒãšãªãããåžžã«çã§çµããããã«æžãããšã§ããå®éã®æžåŒã¯<é€å€æ¡ä»¶> -prune -o <æ€çŽ¢æ¡ä»¶> -printãšãªããŸããäŸã§ã¯.gitã«ãããããå Žå-pruneã§ãã®é
äžãæ¢çŽ¢ããORã®å³åŽãè©äŸ¡ããŸãããäžæ¹.gitã§ãªãå Žåã¯-pruneãåœã«ãªãã®ã§ORã®å³åŽã«é²ã¿ããã¿ãŒã³ãããçµæã-printã§è¡šç€ºããŸãã
# skipmeãã£ã¬ã¯ããªé
äžãé€å€ããŠ".txt"ãã¡ã€ã«ãæ€çŽ¢
$ find testdir -path "testdir/skipme" -prune -o -name "*.txt" -print
testdir/subdir/a.txt
testdir/file1.txt
skipmeãã£ã¬ã¯ããªããšé€å€ããŠãããããéåžžãªããããããsecret.txtãçµæã«å«ãŸããŠããªãããšãããããŸãããã®ããã«ãç¹å®ã®ãã£ã¬ã¯ããªïŒãã«ãäžã®å·šå€§ãã©ã«ããããã¯ã¢ãããã£ã¬ã¯ããªãªã©ïŒãæ¢çŽ¢å¯Ÿè±¡ããå€ãããå Žåã«-pruneãã¿ãŒã³ãå
é ã§äœ¿ãã®ãå®ç³ã§ããæ³šæ: -pruneã¯-depthãšäœµçšã§ããªããããå
ã«-depthãæå®ããŠãããšå¹ããªããªããŸãã
# è€æ°ã®æ¡ä»¶ãAND/ORã§çµã¿åãããäŸ
$ find testdir \( -name "*.txt" -o -name "*.log" \) -type f -size +0 -print
testdir/skipme/secret.txt
testdir/file2.log
ãã¡ãã¯ã.txtãŸãã¯.logã§ããã€éåžžãã¡ã€ã«ã§ãã€ãµã€ãºã0ãã倧ããããã¡ã€ã«ãæ¢ããŠããŸãã-oïŒORïŒã®çµåã-aïŒANDïŒãã匱ãããã(ãš)ã§å²ãã§ã°ã«ãŒãåããŠããŸããçµæãšããŠsecret.txt(ããã¹ã, éåžžãã¡ã€ã«, ãµã€ãº11ãã€ã)ãšfile2.log(ãã°, éåžžãã¡ã€ã«, ãµã€ãº6ãã€ã)ã衚瀺ãããŸããããªã-type f -size +0éšåã¯ANDã§ç¹ãã£ãŠããçç¥ããŠããŸãããæç€ºããŠ-type f -a -size +0ãšæžããŠãåãæå³ã§ãã
8. ã³ãã³ããå®è¡ããïŒ-exec, -execdir, -okïŒ
# èŠã€ãã£ãåãã¡ã€ã«ã®è¡æ°ãæ°ãã (wc -l ãå®è¡)
$ find testdir -type f -name "*.txt" -exec wc -l {} \;
0 testdir/subdir/a.txt
10 testdir/skipme/secret.txt
0 testdir/file1.txt
-exec <ã³ãã³ã> {} \;ã§åçµæã«ã€ããŠã³ãã³ããå®è¡ã§ããŸããäžèšã§ã¯ããã¹ããã¡ã€ã«ããããã«å¯Ÿãwc -l <ãã¡ã€ã«å>ãå®è¡ãããã®æšæºåºåïŒè¡æ°ãšãã¡ã€ã«åïŒãã¿ãŒããã«ã«è¡šç€ºãããŠããŸãã{}ã¯æ€çŽ¢ã§èŠã€ãã£ããã¡ã€ã«ãžã®çµ¶å¯ŸãŸãã¯çžå¯Ÿãã¹ã«çœ®ãæãããŸãïŒãã®äŸã§ã¯testdirãæå®ããŠããã®ã§åºåã«ã¯testdir/...ãšããçžå¯Ÿãã¹ãå«ãŸããŠããŸãïŒã
# "-exec"ãš"-execdir"ã®åäœæ¯èŒ
$ find testdir -type f -name "secret.txt" -exec ls "{}" \;
testdir/skipme/secret.txt
$ find testdir -type f -name "secret.txt" -execdir ls "{}" \;
./secret.txt
æåã®-execã§ã¯lsã³ãã³ããfindãå®è¡ããå ŽæïŒã«ã¬ã³ããã£ã¬ã¯ããªïŒã§åããåŒæ°ãšããŠtestdir/skipme/secret.txtãšãããã¹ãåãåã£ãããããã®ãŸãŸãã«ãã¹ã衚瀺ãããŸãããäºã€ç®ã®-execdirã§ã¯ãsecret.txtã®ååšãããã£ã¬ã¯ããªskipmeã«ã«ã¬ã³ããã£ã¬ã¯ããªãç§»ããŠããlsãå®è¡ãããããçµæã¯åœè©²ãã£ã¬ã¯ããªå
ã§ã®ãã¹ïŒ./secret.txtïŒã衚瀺ãããŠããŸãããã®ããã«-execdirã¯ã³ãã³ãããã¡ã€ã«ã®æåšãã£ã¬ã¯ããªã§å®è¡ãããç¹ã§-execãšç°ãªããŸãã
# "-exec"ã§è€æ°ãã¡ã€ã«ããŸãšããŠåŠçãã (+ ã®äœ¿çš)
$ find testdir -type f -name "*.txt" -exec echo "Found file:" {} \;
Found file: testdir/subdir/a.txt
Found file: testdir/skipme/secret.txt
Found file: testdir/file1.txt
$ find testdir -type f -name "*.txt" -exec echo "Found file:" {} +
Found file: testdir/subdir/a.txt testdir/skipme/secret.txt testdir/file1.txt
äžã¯-execã®;ãš+ã®éãã瀺ããäŸã§ãã;çã§ã¯echoã³ãã³ããããããããã¡ã€ã«ããšã«3åå®è¡ããããããã1è¡ãã€åºåããŠããŸããäžæ¹+çã§ã¯ã3ã€ã®ãã¹ããŸãšããŠ1åã®echoã«åŒæ°ãšããŠæž¡ãããŠå®è¡ãããããã1åã®å®è¡ã§3ãã¡ã€ã«åã®ãã¹ã空çœåºåãã§åºåãããŸããïŒã³ãã³ãã«ãã£ãŠã¯ãã®å·®ã§åäœãç°ãªãå ŽåããããŸãããechoã§ã¯åé¡ãªãäžè¡ã«é£çµãããŸããïŒã倧éã®çµæã«å¯ŸããŠã¯+ãäœ¿ãæ¹ãå¹ççã§ãããã ãã-exec <cmd> {} +ã§äžåºŠã«æž¡ããããã¡ã€ã«æ°ã¯ã·ã¹ãã ã®ã³ãã³ãã©ã€ã³é·å¶éã®ç¯å²ã«å¶çŽãããŸãããã®ããæ¥µç«¯ã«å€ãå Žåã¯å
éšçã«è€æ°åã«åããŠå®è¡ãããŸãããããã§ã1ãã¡ã€ã«ãã€å®è¡ãã;ããé«éã«ãªããŸãã
# 察話çã«åé€ç¢ºèªãããªãããã¡ã€ã«ãåé€ (-ok ã®äœ¿çšäŸ)
$ find testdir -type f -name "*.log" -ok rm {} \;
< rm .../testdir/file2.log > ? y
äžèšã§ã¯ãŸãfile2.logãèŠã€ãããrmã³ãã³ããå®è¡ããŠããã< ... > ?ãšãã確èªã¡ãã»ãŒãžã衚瀺ãããŸããyãšçãããšåé€ãè¡ãããnãªãã¹ããããããŸãã-okã¯èª€åé€é²æ¢ã«ã¯æçšã§ãããé察話ã§å€æ°ã®ãã¡ã€ã«ãåŠçããå Žåã¯äžåãã§ãã
9. ãã¡ã€ã«ãåé€ã»ã¢ãŒã«ã€ãããïŒ-delete, xargsãšã®äœµçšãªã©ïŒ
# äŸ: æ§ããã°ãã¡ã€ã«ãåé€ããïŒ-deleteã®å©çšïŒ
$ find testdir -name "*.log" -mtime +7 -print
testdir/file2.log
$ find testdir -name "*.log" -mtime +7 -delete
$ find testdir -name "*.log" -print
ãŸã-printã§7æ¥ããå€ã.logãã¡ã€ã«ã確èªããåŸã-deleteã§è©²åœãããã¡ã€ã«ã峿åé€ããŠããŸããfile2.logã1ã€ããããã-deleteå®è¡åŸã«ã¯findããŠãäœãåºåãããªãïŒåé€ãããïŒããšã確èªããŠããŸãã-deleteã¯ç°¡äŸ¿ã§ããå±éºã䌎ãããããããªã䜿ããäžåºŠ-printã§å¯Ÿè±¡ã確èªããã®ããã¹ããã©ã¯ãã£ã¹ã§ãããŸããåé€é åºã®åé¡ããããã£ã¬ã¯ããªã-deleteãããå Žåã¯-depthã䜵çšããŠåãã¡ã€ã«â芪ãã£ã¬ã¯ããªã®é ã§åé€ããããåã«rm -rãäœ¿ãæ¹ãè¯ãã§ãããã
# äŸ: 7æ¥ããå€ããã°ãgzipå§çž®ããïŒ-execã®å©çšïŒ
$ find /var/log -type f -name "*.log" -mtime +7 -exec gzip {} \;
ïŒåºåã¯çç¥ããã®ã³ãã³ããå®è¡ãããšãããããå.logãã¡ã€ã«ããã®å Žã§.log.gzã«å§çž®ãããŸããïŒ
-execã䜿ãã°åé€ä»¥å€ã«ããäŸãã°å€ããã°ãèªåçã«å§çž®ããããšãã§ããŸãã{} \;ã«ãã£ãŠããããããã¡ã€ã«ããšã«äžã€ãã€gzipã³ãã³ããå®è¡ãããŸãããã¡ã€ã«æ°ãéåžžã«å€ãå Žåãäžã€ãã€å§çž®ã ãšæéãããããããGNU Parallelãxargsã®-Pãªãã·ã§ã³çã§äžŠåå®è¡ããé«åºŠãªæ¹æ³ããããŸããããŸãã¯ã·ã³ãã«ãªfind -execã§ç¢ºå®ã«åŠçããã®ãå®å
šã§ãã
# äŸ: ".txt"ãã¡ã€ã«äžèЧãäœæããïŒ-print0 ãš xargs ã®äœµçšïŒ
$ find testdir -type f -name "*.txt" -print0 | xargs -0 ls -l > txt_files.list
ïŒxargsã®å®è¡ã«ã¯åºåããããŸããããtxt_files.listã«ãªã¹ããä¿åãããŸããïŒ
äžèšã§ã¯-print0ã§åçµæããã«æååºåãã§åºåãããããxargs -0ã§å®å
šã«åãåã£ãŠls -lãå®è¡ããã®çµæããã¡ã€ã«ã«ãªãã€ã¬ã¯ãããŠããŸãã-print0ãšxargs -0ã¯ã»ããã§äœ¿ãããšã§ããã¡ã€ã«åã«ç©ºçœãç¹æ®æåãå«ãŸããŠããŠãå®å
šã«åŠçã§ããŸã (pubs.opengroup.org)ãGNUçfindã§ã¯-exec <cmd> {} +ã§ãåæ§ã«äžæ¬åŠçã§ããŸãããxargsã¯ãã€ãã©ã€ã³ã§ä»ã®ã³ãã³ããšçµã¿åãããå Žåã«äŸ¿å©ã§ãã
äžè¬çãªå©çšäŸã»ãã¹ããã©ã¯ãã£ã¹
findã³ãã³ãã¯ã·ã¹ãã 管çãéçºã®çŸå Žã§å¹
åºã䜿ãããŠããŸãããã®äžã§ãå
žåçãªãŠãŒã¹ã±ãŒã¹ãšãå¹ççãã€å®å
šã«å©çšããããã®ãã¹ããã©ã¯ãã£ã¹ãããã€ã玹ä»ããŸãã
-
ãã°ãããã¯ã¢ãããã¡ã€ã«ã®ã¯ãªãŒã³ã¢ãã: äŸãã°ãäžå®æéçµéãããã¡ã€ã«ã®åé€/å§çž®ãã¯
findã®ä»£è¡šçãªçšéã§ãã- å€ããã¡ã€ã«åé€:
find /path -type f -mtime +30 -exec rm {} \;â 30æ¥ä»¥äžåã«æŽæ°ããããã¡ã€ã«ãåé€ã - å€ããã°å§çž®:
find /var/log -name "*.log" -mtime +7 -exec gzip {} \;â 1é±é以äžåã®ãã°ãgzipå§çž®ã - ãµã€ãºã§ã¯ãªãŒã³ã¢ãã:
find /backup -type f -size +100M -exec rm {} \;â 100MBè¶ ã®å€§ããªãã¡ã€ã«ãåé€ããŠãã£ã¹ã¯ç©ºã容é確ä¿ããªã©ã
ãããã®æäœã¯å®è¡åã«å¯Ÿè±¡ã確èªããããšãéèŠã§ããäžåºŠåé€ãããšå ã«æ»ããªãããããŸã-printã-lsã§å¯Ÿè±¡äžèЧããã§ãã¯ããåé¡ãªããã°-deleteã-exec rmã«åãæ¿ãããšå®å šã§ãã
- å€ããã¡ã€ã«åé€:
-
ã»ãã¥ãªãã£ãã§ãã¯: ã·ã¹ãã äžã®æªãããã¡ã€ã«ãæ¢ãã®ã«ã䟿å©ã§ããäŸãã°:
- SUID/SGIDãã¡ã€ã«æ€åº:
find / -type f -perm -4000 -lsâ SUIDããããç«ã£ãŠããå¯èœæ§ã®ããå®è¡ãã¡ã€ã«ãäžèŠ§è¡šç€ºã - ã¯ãŒã«ãæžã蟌ã¿å¯èœãã¡ã€ã«:
find /path -perm -002 -not -type l -printâ ãã®ä»ãŠãŒã¶ã«æžã蟌ã¿èš±å¯ããããã¡ã€ã«ãæ€çŽ¢ïŒã·ã³ããªãã¯ãªã³ã¯ã¯é€å€ïŒãå ±æãã£ã¬ã¯ããªãªã©ã§æå³ããæš©éãåºãã£ãŠããªãããã§ãã¯ã§ããŸãã - å€ç«ãã¡ã€ã«æ€åº:
find /home -nouser -o -nogroup -printâ ã·ã¹ãã äžã«ååšããªãUID/GIDã®ãã¡ã€ã«ãæ€åºïŒãŠãŒã¶å逿Œããªã©ã®ç®¡çç®çïŒã
- SUID/SGIDãã¡ã€ã«æ€åº:
-
éçºæã®ã³ãŒãæ€çŽ¢:
grepã§ã¯ãªãfindã§ãã¡ã€ã«ãªã¹ããçµã蟌ãã§ããåŠçããå Žé¢ã¯å€ãã§ãã- æ¡åŒµåã§æ€çŽ¢:
find src/ -name "*.java" -printâ JavaãœãŒã¹ãã¡ã€ã«ã ããªã¹ãã¢ããã - è€æ°ãã¿ãŒã³:
find . \( -name "*.c" -o -name "*.h" \) -not -path "./vendor/*" -printâ Cã®ãœãŒã¹ãšããããã¡ã€ã«ãããµãŒãããŒãã£ã®vendorãã£ã¬ã¯ããªãé€å€ããŠæ€çŽ¢ã - ç¹å®ãµã€ãºä»¥äžã®ç»å:
find . -type f -name "*.png" -size +5M -printâ 倧ããªç»åãã¡ã€ã«ãæ¢ããŠæé©å察象ã«ããããªã©ã - å
容ãšã®çµã¿åãã: åçŽã«ãã¡ã€ã«å
å®¹ãæ€çŽ¢ãããªã
grep -Rã§ååã§ãããäŸãã°ãç¹å®ãã£ã¬ã¯ããªãé€å€ããŠããŒã¯ãŒãæ€çŽ¢ããããå Žåã«ã¯findã§çµã£ãŠãã-exec grepããæããããŸããäŸ:ããã¯find . -type f -not -path "./node_modules/*" -exec grep -H "TODO" {} \;node_modulesãé€å€ãã€ã€å šãã¡ã€ã«ãã"TODO"ãå«ãè¡ãæ€çŽ¢ããŸããgrep -R --exclude-dir=node_modules "TODO" .ãšåçã®åŠçã§ãããfindã®ã»ãã现ããæ¡ä»¶ã远å ããããå Žåã«æçšã§ãã
- æ¡åŒµåã§æ€çŽ¢:
-
æ€çŽ¢çµæã®ãã©ãŒãããåºå: ãã¡ã€ã«äžèЧãã¹ã¯ãªããã§åŠçããããå¥ããŒã«ã«æž¡ãå Žåã
-printfã§æ å ±ãæŽåœ¢ã§ããŸãã- äŸ: ãã¡ã€ã«ãã¹ãšãµã€ãºã®CSVåºå:
ããã§åãã°ãã¡ã€ã«ã®ãã¹ãšãµã€ãºïŒãã€ãïŒãã«ã³ãåºåãã§åºåãããExcelçã§éèšããããšãã§ããŸããfind /var/log -type f -printf "%p,%s\n" > file_sizes.csv - äŸ: HTMLãã¡ã€ã«ã®æçµæŽæ°æ¥æäžèЧ:
find /var/www -name "*.html" -printf "%f was updated on %TD at %TT\n"%TæžåŒã䜿ããåHTMLãã¡ã€ã«ã®ååãšæŽæ°æ¥ããããããã衚瀺ããŠããŸãã
-printfã¯åŒ·åã§ããåè¿°ã®éãéæšæºã§ãã®ã§ãä»ç°å¢ã§åããå¯èœæ§ãããã¹ã¯ãªããã§ã¯ã代ããã«-exec statã-exec lsãçµã¿åãããæ¹æ³ãæ€èšããŸãããã
- äŸ: ãã¡ã€ã«ãã¹ãšãµã€ãºã®CSVåºå:
-
ããã©ãŒãã³ã¹:
findã¯åŒ·åã§ãããåºç¯å²ïŒäŸãã°ã«ãŒãçŽäž/ïŒãæ€çŽ¢ãããšéåžžã«å€ãã®ãã¡ã€ã«ãèããããæéãããããŸããå¹çåã®ãã€ã³ã:- æ€çŽ¢ãã£ã¬ã¯ããªãçµã: æ¢ãããé åãåãã£ãŠãããªãæåã®ãã¹ã§éå®ããŸããããäŸãã°
find /home/user/Documents ...ã®æ¹ãfind / ...å šäœããçµãããç¡é§ããããŸããã - æ¡ä»¶ã®é åº:
findã®åŒã¯å·Šããé ã«è©äŸ¡ããã-aã®å Žåã¯éäžã§åœã«ãªãã°ãã®åŸã®æ¡ä»¶ãè©äŸ¡ããŸããããããã£ãŠãã³ã¹ãã®äœãå€å®ïŒãã¡ã€ã«çš®å¥ã®ãã§ãã¯ãªã©ïŒãæ©æã«åœã«ãªããããæ¡ä»¶ãå ã«æžããšè¥å¹²å¹çãäžãããŸããäŸ:-type f -name "*.mp4"ãšæžãæ¹ã-name "*.mp4" -type fãããããã«å¹ççã§ãïŒåè ã¯ãã£ã¬ã¯ããªã«å¯Ÿã.mp4ãã¿ãŒã³ãã§ãã¯ãããåã«-type fã§åŒŸããïŒãäœæå·®ã¯å°ããã§ããã倧éã®ãã¡ã€ã«ã§ã¯ç©ã¿éãªãããæèãããšè¯ãã§ãããã - äžèŠé åã®é€å€:
-pruneã§äžèŠãªãã£ã¬ã¯ããªãå®å šã«é€å€ããã®ã¯å€§ããªå¹æããããŸããç¹ã«/çŽäžãæ€çŽ¢ããå Žåã/procã/sysãªã©ä»®æ³ãã¡ã€ã«ã·ã¹ãã ãäžèŠãªããŠã³ããã€ã³ãã¯-xdevã§è·šããªãããã«ãããã-pathãš-pruneã§é€å€ããŠãã ããã locateãšã®äœ¿ãåã: ãã¡ã€ã«åã ãã§æè¿ã®æŽæ°ã¯åããªãããšãã£ãçšéãªãupdatedbã³ãã³ãã§äœæãããDBãåŒãlocateã®æ¹ãäžç¬ã§çµæãåºãŸãããã ãå 容ã詳现æ¡ä»¶ã«ã¯å¯Ÿå¿ã§ããŸããã®ã§ã䜿ãåããèå¿ã§ãïŒlocateã¯cronæŽæ°ã®ããææ°ãã¡ã€ã«ã¯ãããããªãããšããããŸãïŒã
- æ€çŽ¢ãã£ã¬ã¯ããªãçµã: æ¢ãããé åãåãã£ãŠãããªãæåã®ãã¹ã§éå®ããŸããããäŸãã°
-
åºåçµæã®åãæ±ã:
findã®åºåã¯åºæ¬çã«1è¡=1ãã¡ã€ã«ãã¹ã§ãããããããã¡ã€ã«åã«æ¹è¡ãå«ãŸããŠããç¹æ®ã±ãŒã¹ã§ã¯-printã®æ¹è¡åºåããç Žç¶»ããŸããããããã±ãŒã¹ã§ã¯-print0ãšãã«åºåãã䜿ãããã€ãå ã§ç¢ºå®ã«åŠçããïŒxargs -0ãPerl/Pythonã¹ã¯ãªããåŽã§ãã«åºåããèªãïŒå¿ èŠããããŸã (pubs.opengroup.org)ããŸããã·ã§ã«ã§çŽæ¥åŠçããå Žåã¯IFSã調æŽããäžã§readã«ãŒãã§åãåãæ¹æ³ããããŸã (pubs.opengroup.org)ãåºæ¬çã«ãã¡ã€ã«ãªã¹ããå¥ã³ãã³ãã«æž¡ãå Žåã¯ã¹ããŒã¹ãæ¹è¡ãå«ã¿åŸãããšãåžžã«å¿µé ã«çœ®ããŸãããããã®ç¹ã§ãä»¶æ°ãå€ããªããã°-exec <cmd> {} \;ã-exec ... +ãäœ¿ãæ¹ãå®å šã§ãïŒfindãçŽæ¥ã³ãã³ããåŒã¶ãããéäžã§äžæããå Žåã®éšåçãªåºåã®æ±ããªã©ãå«ããŠãã€ãããå ç¢ã§ã (pubs.opengroup.org)ïŒã -
ãã®ä»ã®æ³šæç¹:
- ãã¹ã®æå®: æåã®ãã¹åŒæ°ã«
-ã§å§ãŸããã®ïŒäŸãã°ãã£ã¬ã¯ããªåã-dataãªã©ïŒã¯ãfindã«ãªãã·ã§ã³ãšèª€èªãããå¯èœæ§ããããŸã (pubs.opengroup.org)ããã®ãããªå Žåã¯æç€ºçã«./-dataãš./çµç±ã§æå®ããããfind -- -data ...ã®ããã«--ïŒä»¥éã¯å šãŠãã¹ãšã¿ãªãïŒã䜿ã£ãŠãšã¹ã±ãŒãããŸãããã - çŸåšã®ãã£ã¬ã¯ããª: ãã¹ãçç¥ãããšGNU findçã§ã¯æé»çã«
.ãæå®ããããã®ãšããŠåäœããŸãããPOSIXæšæºäžã¯æªå®çŸ©ã®æåã§ã (pubs.opengroup.org)ãã¹ã¯ãªããå ã§ã¯å¯èªæ§ã®ããã«ãå¿ ãæ€çŽ¢éå§ãã£ã¬ã¯ããªãæèšããç¿æ £ãã€ããŸãããã - ã¯ã©ãŒãæŒã:
findã®ãã¿ãŒã³åŒæ°ïŒ-nameã-pathã®ãã¿ãŒã³ïŒã¯ãã·ã§ã«ãå ã«ã¯ã€ã«ãã«ãŒãå±éããŠããŸããšæå³éãã«åäœããŸãããäŸãã°ã«ã¬ã³ãã«*.txtãã¡ã€ã«ãååšããç¶æ ã§find . -name *.txtãšæžããšãäžåºŠã·ã§ã«ã*.txtãå±éããŠããŸãçµæããããããªããŸãïŒfind . -name file1.txt subdir/a.txt ...ã®ããã«å±éãããšã©ãŒã«ãªãïŒãå¿ ãfind . -name "*.txt"ã®ããã«ã¯ã©ãŒãããããç¹æ®æåããšã¹ã±ãŒãããŠãã ããã -deleteã®äœçœ®: å è¿°ããŸãããã-deleteã¯è¡šé¢äžä»ã®æ¡ä»¶ãšäžŠåã«æžããŠãå¿ ãæåŸã«çœ®ãããã«ããŠãã ãã (man.freebsd.org)ãäŸãã°find dir -type f -deleteã¯å®å šã§ãããfind dir -delete -type fã¯å šãŠã®dirçŽäžãåé€ããããšããŠãã-type fãå€å®ããæåã«ãªãããã£ã¬ã¯ããªãåé€ããããšããŠããŸããŸãã-pruneã®æžãæ¹: äžèŠfind . -prune -o -name "*.txt"ã®ããã«æžãã°é€å€ã§ãããã§ãããããã ãšåžžã«çãè¿ã-pruneãå ã«è©äŸ¡ããå šãã¡ã€ã«ã察象ã«ãªã£ãŠããŸããŸãã-pruneã䜿ãéã¯å¿ ã**<æ¡ä»¶> -prune -o <ä»ã®æ¡ä»¶>ãšãã圢ã§ã-pruneãçã«ãªã£ããšãã ãORã®ç絡è©äŸ¡ã§åŸç¶ãã¹ãããããããé 眮ããŠãã ããïŒäžèš7**ã®äŸåç §ïŒãããã-aãš-oã®åªå é äœãèžãŸããå¿ èŠãªãå šäœãã«ãã³ã§å²ãã§æã£ãéãã®è«çã«ãªãã確èªããŸãããã- å®è£
å·®: GNU findãšBSD findã§ã¯ãªãã·ã§ã³åã»æåã«åŸ®çްãªéãããããŸããäŸãã°BSDç³»ïŒmacOSå«ãïŒã§ã¯
-maxdepthçããµããŒãããŸãããGNUæ¡åŒµã®-printfã¯å©çšã§ããŸããããŸããmacOSã®findã¯-Eãªãã·ã§ã³ã§æ£èŠè¡šçŸãBRE/EREããåãæ¿ããä»çµã¿ããããŸãããGNU findã¯-regextypeã§è€æ°çš®ããéžã¹ãŸãããã®ããã«ç§»æ€æ§ãå¿ èŠãªã¹ã¯ãªãããæžãéã«ã¯POSIXã«ããæ©èœïŒåºæ¬çãª-nameã-typeçïŒã®ã¿ã«çããæ¡åŒµãå¿ èŠãªå Žåã¯åçã«å€å¥ããã代æ¿ã³ãã³ãïŒäŸ:perlãgrepçïŒãæ€èšããã®ãæã§ãã
- ãã¹ã®æå®: æåã®ãã¹åŒæ°ã«
ç·Žç¿åé¡
æåŸã«ãfindã³ãã³ãã®çè§£åºŠãæ·±ããããã®æŒç¿åé¡ãçšæããŸãããé£æåºŠã¯åçŽããäžçŽãŸã§æ··ãã£ãŠããŸããååé¡ã®ããšã«è§£çäŸãšè§£èª¬ãç¶ããŸãã®ã§ããŸãèªåã§èããŠããè§£çã確èªããŠãã ããã
- ç¹å®ã®æ¡åŒµåãæã€ãã¡ã€ã«ã®æ€çŽ¢:
/var/logãã£ã¬ã¯ããªä»¥äžããæ¡åŒµåã.logã®ãã¡ã€ã«ããã¹ãŠèŠã€ããŠãã«ãã¹ã衚瀺ããfindã³ãã³ããæžããŠãã ããã - 空ã®ãã¡ã€ã«ã»ãã£ã¬ã¯ããªã®æ€åº: ã«ã¬ã³ããã£ã¬ã¯ããªããããµã€ãºã0ãã€ãã®ãã¡ã€ã«ãŸãã¯äžèº«ã空ã®ãã£ã¬ã¯ããªãå
šãŠæ¢ãåºã
findã³ãã³ããæžããŠãã ããã - æéãšãµã€ãºãçµã¿åãããæ€çŽ¢:
/homeãã£ã¬ã¯ããªä»¥äžãããæçµä¿®æ£ã7æ¥ä»¥å ã§ããµã€ãºã1MiBïŒ1ã¡ã¬ãã€ãïŒä»¥äžãã®éåžžãã¡ã€ã«ãæ¢ãåºããé·ã圢åŒã®ãªã¹ãïŒããŒããã·ã§ã³ããµã€ãºãªã©ã衚瀺ïŒã§çµæã衚瀺ããã³ãã³ããæžããŠãã ããã - ãã£ã¬ã¯ããªãé€å€ããŠã³ã¢ãã¡ã€ã«ãæ€çŽ¢: çŸåšã®ãã£ã¬ã¯ããªä»¥äžã§ãååã
coreãšãããã¡ã€ã«ïŒãµã€ãº0ã®ã³ã¢ãã³ããã¡ã€ã«ãæ³å®ïŒãæ¢ãã³ãã³ããæžããŠãã ããããã ããããŒãžã§ã³ç®¡ççšã®.gitãã£ã¬ã¯ããªå ã¯æ€çŽ¢ããªãããé€å€ããªããããŸããèŠã€ãã£ããã¡ã€ã«ã¯ãã¹ã衚瀺ããã ãã§ãããã®ãšããŸãã - å€ããã°ãã¡ã€ã«ã®å§çž®: ã«ã¬ã³ããã£ã¬ã¯ããªä»¥äžã«ãã
.logæ¡åŒµåã®ãã¡ã€ã«ã®ãã¡ãæçµæŽæ°ã7æ¥ããå€ããã®ããã¹ãŠgzipå§çž®ïŒæ¡åŒµå.gzã«å€æŽïŒããfindã³ãã³ããæžããŠãã ããïŒå§çž®ã³ãã³ãã®gzipãå©çšããfindã®ãªãã·ã§ã³ã ãã§å®çŸããŠãã ããïŒã - å£ããã·ã³ããªãã¯ãªã³ã¯ã®æ€åº:
/homeãã£ã¬ã¯ããªä»¥äžãããå®å ãååšããªãã·ã³ããªãã¯ãªã³ã¯ïŒãããããå£ãããªã³ã¯ãïŒãæ¢ãããã®ãã¹ã衚瀺ããfindã³ãã³ããæžããŠãã ããã
è§£çãšè§£èª¬
-
æ¡åŒµå
.logãã¡ã€ã«ã®æ€çŽ¢:
è§£çäŸ:find /var/log -type f -name "*.log" -print
解説:/var/log以äžãååž°çã«æ¢çŽ¢ããéåžžãã¡ã€ã«ïŒ-type fïŒãã€ååã.logã§çµãããã®ïŒ-name "*.log"ïŒã衚瀺ããŸãã-printã¯çç¥å¯èœã§ãããæç€ºããŠãæ§ããŸãããã¯ã©ãŒãä»ã"*.log"ãšããããšã§ãã·ã§ã«ãã¯ã€ã«ãã«ãŒããå±éããã®ãé²ãã§ããŸãã -
空ãã¡ã€ã«ã»ç©ºãã£ã¬ã¯ããªã®æ€åº:
è§£çäŸ:find . \( -type f -size 0 \) -o \( -type d -empty \) -print
解説: ã«ã¬ã³ããã£ã¬ã¯ããª(.)以äžã§ãµã€ãº0ãã€ãã®ãã¡ã€ã«(-type f -size 0)ãŸãã¯äžèº«ã空ã®ãã£ã¬ã¯ããª(-type d -empty)ãæ¢ããŠããŸãã-emptyã¯ãã£ã¬ã¯ããªã®å Žåãäžã«åèŠçŽ ããªããããšãæå³ãããã¡ã€ã«ã®å Žåã¯ãµã€ãº0ãšå矩ã§ãããã®åé¡ã§ã¯äž¡æ¹ãåºå¥ããŠæ¡ä»¶ãæžããŠãããã§ãããå®ã¯ç°¡åã«find . -empty -printãšããã ãã§ã空ã®ãã¡ã€ã«ãŸãã¯ç©ºã®ãã£ã¬ã¯ããªãã®äž¡æ¹ã«ãããããŸãïŒ-emptyã¯ãã¡ã€ã«ã»ãã£ã¬ã¯ããªã©ã¡ãã«ãé©çšå¯èœãªããïŒãè«çæŒç®ã䜿ã£ãäžèšè§£çäŸã§ã¯ã-emptyããã£ã¬ã¯ããªã«éå®ããããã«-type dãšçµã¿åãããŠããŸãããçç¥ãå¯èœã§ãã -
æéïŒãµã€ãºã®è€åæ€çŽ¢:
è§£çäŸ:find /home -type f -mtime -7 -size +1M -exec ls -l {} \;
解説:/home以äžã®éåžžãã¡ã€ã«ã§ãéå»7æ¥ä»¥å ã«æŽæ°ããïŒ-mtime -7ïŒããµã€ãºã1MiBãè¶ ããïŒ-size +1MïŒãã®ã«å¯Ÿããls -lãå®è¡ããŠããŸãã-exec ls -l {} \;éšåã§é·ã圢åŒã®ãªã¹ãåºåãšãªããããŒããã·ã§ã³ããµã€ãºãæŽæ°æ¥æã確èªã§ããŸãã-size +1Mã¯GNU/BSDæ¡åŒµïŒMã¯1048576ãã€ãïŒã§ãããPOSIXç°å¢ãããªãå Žåã¯-size +2047cãšæžãæ¹æ³ããããŸãïŒ512ãã€ãã®ãããã¯åäœã§2047以äž=1MBè¶ ãæå³ïŒããã®ããã«ããã¡ã€ã«ç¹æ§ã®æ¡ä»¶ãè€æ°ANDã§ç¹ãã°è€åçãªæ€çŽ¢ãã§ããŸãã -
ãã£ã¬ã¯ããªé€å€ãšã³ã¢ãã¡ã€ã«æ€çŽ¢:
è§£çäŸ:find . -path "./.git" -prune -o -type f -name "core" -size 0 -print
解説: ã«ã¬ã³ããã£ã¬ã¯ããªããããŸã.gitãã£ã¬ã¯ããªã-pruneã§é€å€ãããã®ä»ã®éšåã§ååãcoreãã€ãµã€ãº0ãã€ãã®éåžžãã¡ã€ã«ãæ€çŽ¢ããŠããŸããå顿ã§ã¯ãcoreãã¡ã€ã«ïŒãµã€ãº0ã®ãã®ïŒããšãã£ãã®ã§-size 0ãæ¡ä»¶ã«å«ããŠããŸãïŒäžèŠãªãçç¥å¯ïŒã-pruneã®äœ¿ãæ¹ããã€ã³ãã§ã-path "./.git" -prune -o ...ãšããããšã§.gitå ã¯æ¢çŽ¢ããŸãããåŸåã®-type f -name "core" -size 0ãORã«ãã£ãŠ.git以å€ã®å Žæã«é©çšããã該åœãã¡ã€ã«ãããã°è¡šç€º(-print)ãããŸãã -
å€ããã°ãã¡ã€ã«ã®å§çž®:
è§£çäŸ:find . -type f -name "*.log" -mtime +7 -exec gzip {} \;
解説: ã«ã¬ã³ããã£ã¬ã¯ããªä»¥äžã®7æ¥ããæŽæ°ãå€ããã°ãã¡ã€ã«ãèŠã€ããgzipã³ãã³ãã§å§çž®ããŠããŸããgzipã¯å®è¡ãããšå ã®ãã¡ã€ã«ã.gzã«çœ®ãæããããããã®1è¡ã§å§çž®ãå®äºããŸãã-exec ... \;ã¯èŠã€ãã£ããã¡ã€ã«ããšã«1åãã€gzipãå®è¡ããŸãããã¡ã€ã«æ°ãå€ãå Žåã¯-exec ... +ã§ãŸãšããŠåŠçããããšãã§ããŸãããgzipã¯è€æ°ãã¡ã€ã«ãåŒæ°ã«åããšäžã€ãã€åå¥ã«å§çž®ããã ããªã®ã§ãæ¯ãèãã¯åãã«ãªããŸãïŒå€§éã®ãã¡ã€ã«ã䞊ååŠçãããå Žåã¯å¥éé«åºŠãªæ¹æ³ãå¿ èŠã§ãïŒã -
å£ããã·ã³ããªãã¯ãªã³ã¯ã®æ€åº:
è§£çäŸ:find /home -xtype l -print
解説: GNUãŸãã¯BSDç³»ã®findãæ³å®ããåçã§ãïŒã©ã¡ãã-xtype lãµããŒãããïŒã/home以äžã§ããªã³ã¯å ã蟿ã£ãåãlïŒã·ã³ããªãã¯ãªã³ã¯ïŒã§ãããã®ãããªãã¡ãªã³ã¯å ãååšããªãã·ã³ããªãã¯ãªã³ã¯ãæ€çŽ¢ããŠè¡šç€ºããŸãããªã³ã¯å ãååšããå Žåã-xtypeã¯ãã®å®äœã®åïŒfãdãªã©ïŒã«ãªãããé€å€ãããå£ããŠãããªã³ã¯ã®ã¿ãçµæã«æ®ããŸã (unix.stackexchange.com)ãç°å¢ã«ãã£ãŠã¯-xtypeã䜿ããªãå Žåããããããç§»æ€æ§ãèãããªã以äžã®ãããªä»£æ¿çããããŸã:find /home -type l ! -exec test -e {} \; -printããã¯ãã·ã³ããªãã¯ãªã³ã¯ã§ããã€
test -eïŒååšãã§ãã¯ïŒã³ãã³ããå®è¡ããçµæãåœã ã£ããã®ããæ¢ãæ¹æ³ã§ãã! -exec ...ã®éšåã§ããªã³ã¯å ãååšããªããå€å®ãè¡ã£ãŠããŸããã©ã®æ¹åŒã§ãç®çã¯éããããŸãããGNUç°å¢ã§ã¯ç°¡æœãª-xtype lãèŠããŠãããšäŸ¿å©ã§ãã