UNIX find ¸í·É¾îUNIX 2007/02/13 16:11 http://blog.naver.com/imawake/140034577639 Çü½Ä : find <°æ·Î> <¿¬»êÀÚ> °æ·Î : find°¡ ÆÄÀÏÀ» ãÀ» óÀ½ À§Ä¡¸¦ ÁöÁ¤ÇÑ´Ù. ¿¹À» µé¾î '/'´Â /(root)ºÎÅÍ Ã£°í, '.'Àº ÇöÀç µð·ºÅ丮 ºÎÅÍ Ã£´Â´Ù. -name : È®ÀåÀÚ°¡ txt ÀÎ È­ÀÏÀ» ã´Â´Ù. find / -name '*.txt' -perm : Æ۹̼ÇÀÌ 666(-rw-rw-rw-)ÀÎ È­ÀÏÀ» ã´Â´Ù. find . -perm 666 -type : ÆÄÀÏÀÇ Å¸ÀÔÀ» ÁöÁ¤ÇÏ¿©, ã°íÀÚÇÏ´Â ÆÄÀÏÀ» ã´Â´Ù. ŸÀÔÀÇ Á¾·ù´Â ´ÙÀ½°ú °°´Ù. b : ºí·Ï Ư¼ö ÆÄÀÏ(block device) c : ij¸¯ÅÍ Æ¯¼ö ÆÄÀÏ (character deice) d : µð·ºÅ丮(directory) f : ÀϹÝÆÄÀÏ(file) l : ½Éº¼¸¯ ¸µÅ©(link) p : ÆÄÀÌÇÁ (pipe) s : ¼ÒÄÏ (socket) ÇöÀç µð·ºÅ丮 ¾Æ·¡¿¡ ÀÖ´Â ¼­ºêµð·ºÅ丮¸¦ ¸ðµÎ ã´Â´Ù. find . -type d -atime +n/-n/n : ÃÖ±Ù nÀÏ ÀÌÀü¿¡ ¾×¼¼½ºµÈ ÆÄÀÏÀ» ã¾ÆÁØ´Ù.(accessed time) +nÀº nÀÏ ¶Ç´Â ±×º¸´Ù ´õ ¿À·¡ ÀüÀÇ ÆÄÀÏ -nÀº ¿À´Ã ºÎÅÍ nÀÏ Àü±îÁöÀÇ ÆÄÀÏ nÀº Á¤È®È÷ nÀÏ Àü¿¡ ¾×¼¼½ºµÇ¾úÀ½À» ÀǹÌÇÑ´Ù. ½Ã½ºÅÛ Àüü¿¡¼­ ÇÑ ´Þ ¶Ç´Â ±× ÀÌ»óÀÇ ±â°£µ¿¾È Çѹøµµ ¾×¼¼½ºÇÏÁö ¾ÊÀº µð·ºÅ丮 find / -atime +30 -type d -ctime +n/-n/n : ctimeÀº ÆÄÀÏÀÇ Æ۹̼ÇÀ» ¸¶Áö¸·À¸·Î º¯°æ½ÃŲ ³¯Â¥¸¦ ÀǹÌÇÑ´Ù. (changed time) +nÀº nÀÏ ¶Ç´Â ±×º¸´Ù ´õ ¿À·¡ ÀüÀÇ ÆÄÀÏ -nÀº ¿À´Ã ºÎÅÍ nÀÏ Àü±îÁöÀÇ ÆÄÀÏ nÀº Á¤È®È÷ nÀÏ Àü¿¡ ¼öÁ¤µÇ¾úÀ½À» ÀǹÌÇÑ´Ù. ÇöÀç µð·ºÅ丮 ¾Æ·¡¿¡¼­ ÃÖ±Ù ÀÏÁÖÀÏ µ¿¾È °íÄ£ ÆÄÀÏ find . -ctime -7 -mtime +n/-n/n : mtimeÀº ÆÄÀϳ»ÀÇ data¸¦ ¸¶Áö¸·À¸·Î º¯°æÇÑ ³¯Â¥¸¦ ÀǹÌÇÑ´Ù.(modified time) +nÀº nÀÏ ¶Ç´Â ±×º¸´Ù ´õ ¿À·¡ ÀüÀÇ ÆÄÀÏ -nÀº ¿À´Ã ºÎÅÍ nÀÏ Àü±îÁöÀÇ ÆÄÀÏ nÀº Á¤È®È÷ nÀÏ Àü¿¡ ¼öÁ¤µÇ¾úÀ½À» ÀǹÌÇÑ´Ù. -cnewer ÆÄÀϸí : 'ÆÄÀϸí' ºÎºÐ¿¡ Àû¾îÁØ ÆÄÀϺ¸´Ù ´õ ÃÖ±Ù¿¡ ¼öÁ¤µÈ ÆÄÀϵéÀ» ã¾ÆÁØ´Ù. test.txt È­ÀÏÀÌ »ý¼ºµÈ ÀÌÈÄÀÇ È­ÀÏÀ» ã´Â´Ù. find . -cnewer test.txt -print -user À¯Àú³×ÀÓ : 'À¯Àú³×ÀÓ' ºÎºÐ¿¡ ÁöÁ¤ÇÑ À¯Àú ¼ÒÀ¯ÀÇ ÆÄÀÏÀ» ã¾ÆÁØ´Ù. nalabi ¶ó´Â °èÁ¤ÀÇ È­ÀÏÀ» ã¾ÆÁØ´Ù. find / -user nalabi ±×¿Ü ÀÚÁÖ ¾²ÀÌÁö ¾ÊÁö¸¸ Ãß°¡ ¿É¼ÇÀ¸·Î´Â ¾Æ·¡¿Í °°´Ù. -maxdepth n 0ÀÌ ¾Æ´Ñ Á¤¼ö°ªÀ¸·Î °æ·Î ±íÀ̸¦ ÁöÁ¤ÇÏ¿© °Ë»öÀ» ÇÒ °æ¿ì¿¡ »ç¿ëÇÑ´Ù. ¿¹¸¦µé¾î, '-maxdepth 1'Àº ½ÃÀÛÀ§Ä¡·Î ÁöÁ¤ÇÑ µð·ºÅ丮¸¸ °Ë»öÇÏ°í ÇÏÀ§ µð·ºÅ丮´Â ãÁö ¾Ê´Â´Ù. -mindepth ¿É¼ÇÀº ¹Ý´ë·Î µ¿ÀÛÇÑ´Ù. Áï, ÁöÁ¤ÇÑ ¼ýÀÚ¸¸Å­ÀÇ ±íÀ̺ÎÅÍ ±× ÇÏÀ§ µð·ºÅ丮¸¦ °Ë»öÇÑ´Ù. (GNU find ¹öÀü) -follow ½Éº¼¸¯ ¸µÅ©µÈ µð·ºÅ丮µµ °Ë»öÀ» ÇÒ °æ¿ì¿¡ »ç¿ëÇÑ´Ù. -mount ÇöÀçÀÇ ÆÄÀÏ ½Ã½ºÅÛ°ú µ¿ÀÏÇÑ Å¸ÀÔÀÇ ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­¸¸ °Ë»öÀ» ÇÒ °æ¿ì¿¡ »ç¿ëÇÑ´Ù. test¿¡´Â ´ÙÀ½°ú °°Àº ¹æ¹ýµéÀÌ ÀÖÀ¸¸ç, test¿¡ »ç¿ëÇÏ´Â Àμö¿¡´Â º¸´Ù Å« ¼ö¸¦ ÀǹÌÇÏ´Â `'³ª, º¸´Ù ÀÛÀº ¼ö¸¦ ÀǹÌÇÏ´Â `'¸¦ ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ´Ù. Àμö¿¡ ¾Æ¹« ¿¬»êÀÚ°¡ ¾øÀ» °æ¿ì¿¡´Â Á¤È®È÷ ±× Àμö °ªÀ» ÀǹÌÇÑ´Ù. -group ƯÁ¤ ±×·ì ¼ÒÀ¯ÀÇ ÆÄÀϵéÀ» ãÀ» °æ¿ì¿¡ »ç¿ëÇÑ´Ù. -nouser ¼ÒÀ¯ÀÚ°¡ ¾ø´Â ÆÄÀÏÀ» ãÀ» °æ¿ì¿¡ »ç¿ëÇÑ´Ù. Áï, /etc/passwd ÆÄÀÏ¿¡ ¾ø´Â ¼ÒÀ¯ÀÚÀÇ ÆÄÀÏÀ» ãÀ» °æ¿ì¿¡ »ç¿ëÇÑ´Ù. -nogroup ¿Ã¹Ù¸¥ ±×·ìÀÇ ¼ÒÀ¯°¡ ¾Æ´Ñ ÆÄÀÏÀ» ãÀ» °æ¿ì¿¡ »ç¿ëÇÑ´Ù. Áï, /etc/groups ÆÄÀÏ¿¡ ¾ø´Â ±×·ìÀÇ ¼ÒÀ¯ÀÎ ÆÄÀÏÀ» ãÀ» °æ¿ì¿¡ »ç¿ëÇÑ´Ù. newer file1 file2 `file1' º¸´Ù´Â ÀÌÈÄ¿¡ `file2' º¸´Ù´Â ÀÌÀü¿¡ »ý¼ºµÇ°Å³ª º¯ÇüµÈ ÆÄÀϵéÀ» ãÀ» °æ¿ì¿¡ »ç¿ëÇÑ´Ù. -size n[bckw] Å©±â°¡ n À¯´Ö(unit)ÀÎ ÆÄÀÏÀ» ãÀ» °æ¿ì¿¡ »ç¿ëÇÑ´Ù. À¯´ÖÀº ±âº» ¼³Á¤(`b''¿Í ÇÔ²² »ç¿ëÇÑ °æ¿ì¿Í µ¿ÀÏ)ÀÎ 512 ¹ÙÀÌÆ®ÀÇ ºí·°, `c'¸¦ »ç¿ëÇÒ °æ¿ì¿¡´Â 1 ¹ÙÀÌÆ®, `k'¸¦ »ç¿ëÇÒ °æ¿ì¿¡´Â ų·Î¹ÙÀÌÆ®, `w'¸¦ »ç¿ëÇÒ °æ¿ì¿¡´Â 2 ¹ÙÀÌÆ®ÀÇ ¿öµå Å©±â¸¦ ³ªÅ¸³½´Ù. -empty ºñ¾îÀÖ´Â ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ ãÀ» °æ¿ì¿¡ »ç¿ëÇÑ´Ù. (GNU find ¹öÀü) -regex Á¤±ÔÇ¥Çö½Ä(regular expression)À» ÀÌ¿ëÇÏ¿© ÆÄÀϵéÀ» ãÀ» °æ¿ì¿¡ »ç¿ëÇÑ´Ù. `-iregex'´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾ÊÀ» °æ¿ì¿¡ »ç¿ëÇÑ´Ù. (GNU find ¹öÀü) actionÀº test¿¡¼­ÀÇ Á¶°Ç°ú ÀÏÄ¡ÇÏ´Â ÆÄÀϵ鿡 ´ëÇØ ¼öÇàÇÒ ÀÛ¾÷À» ¸í½ÃÇÏ´Â °ÍÀ¸·Î ´ÙÀ½°ú °°Àº ¹æ¹ýµéÀÌ ÀÖ´Ù. -print ãÀº ÆÄÀϵéÀ» Ç¥ÁØÃâ·Â(stdout)À¸·Î Ãâ·ÂÇÑ´Ù. ±âº»À¸·Î ¼³Á¤µÇ¾î ÀÖ´Ù. -fprint file ãÀº ÆÄÀϵéÀ» `file'·Î Ãâ·ÂÇÑ´Ù. `file'ÀÌ Á¸Àç ÇÏÁö ¾ÊÀ» °æ¿ì¿¡´Â »õ·Î »ý¼ºµÇ°í, Á¸ÀçÇÒ °æ¿ì¿¡´Â ±âÁ¸ÀÇ ÆÄÀÏÀº ¾ø¾îÁø´Ù. (GNU find ¹öÀü) -exec ÆÄÀÏÀ» ã¾ÒÀ» °æ¿ì, ãÀº ÆÄÀϵ鿡 ´ëÇØ Æ¯Á¤ ¸í·ÉÀ» ¼öÇà ÇÒ ¶§ »ç¿ëÇÑ´Ù. ÀϹÝÀûÀ¸·Î `-exec command {} ;'ÀÇ Çü½ÄÀ» ÃëÇÑ´Ù. -ok -exec¿Í µ¿ÀÏÇÑ ÀÛ¾÷À» ÇÑ´Ù. ´Ù¸¥ Á¡Àº, ¸í·ÉÀ» ½ÇÇàÇÒ ¶§¸¶´Ù ½ÇÇà Àǻ縦 ¹°¾îº»´Ù. -ls `ls -dils' Çü½ÄÀ¸·Î ãÀº ÆÄÀϵéÀÇ Á¤º¸¸¦ Ãâ·ÂÇÒ¶§ »ç¿ëÇÑ´Ù. -fls file `ls'¿Í µ¿ÀÏÇÏ°Ô µ¿ÀÛÇÏ¸ç °á°ú¸¦ `file'·Î Ãâ·ÂÇÑ´Ù. operator´Â test¿¡¼­ »ç¿ëÇÑ ¿É¼ÇµéÀ» Á¶ÇÕÇÏ¿© Á¶°Ç½ÄÀ» ¸¸µé°íÀÚ ÇÒ¶§ »ç¿ë´Â °ÍÀ¸·Î ´ÙÀ½°ú °°Àº ¹æ¹ýµéÀÌ ÀÖ´Ù. (¼³¸í ¼ø¼­´Â ¿ì¼±¼øÀ§(precedence)¿¡ µû¸¥´Ù.) [¿¹Á¦] ÀÚ½ÅÀÇ È¨ µð·ºÅ丮¿¡¼­ È®ÀåÀÚ°¡ '.txt'ÀÎ ÆÄÀÏÀ» ãÀ» °æ¿ì $ find -name "*.txt'' -print ÇöÀç µð·ºÅ丮 ¹Ø¿¡¼­ ù±ÛÀÚ°¡ ¿µ¾î ´ë¹®ÀÚÀÎ ¸ðµç ÆÄÀÏÀ» ãÀ» °æ¿ì $ find . -name "[A-Z]*'' -print '/usr/local'¿¡¼­ ù µÎ±ÛÀÚ´Â ¿µ¾î ¼Ò¹®ÀÚÀÌ°í ¼¼¹ø° ÇÑÀÚ¸®´Â ¼ýÀÚ·Î ½ÃÀÛÇÏ´Â À̸§À» °¡Áø ÆÄÀÏÀ» ãÀ» °æ¿ì $ find /usr/local -name "[a-z][a-z][0-9]*'' -print È®ÀåÀÚ°¡ .txt ÀÎ ÆÄÀÏÀ» ãÀ¸¸é¼­ ÇöÀç µð·ºÅ丮¿Í ÇÑ ´Ü°è ¹ØÀÇ µð·ºÅ丮¿¡¼­¸¸ ÆÄÀÏÀ» ãÀ» °æ¿ì $ find -maxdepth 2 -name "*.txt'' -print ÇöÀç µð·ºÅ丮 ¹Ø¿¡¼­ `zzang'À̶ó´Â À̸§À» °¡Áø »ç¿ëÀÚ ¼ÒÀ¯ÀÇ ÆÄÀÏÀ» ãÀ» °æ¿ì $ find . -user zzang -print ½Ã½ºÅÛ¿¡¼­ ¼ÒÀ¯ÀÚ³ª ±×·ìÀÌ ¾ø´Â ÆÄÀÏÀ» ãÀ» °æ¿ì (Å©·¡Ä¿°¡ ¸¸µé¾î ³õÀº ÆÄÀÏÀÏ °æ¿ìµµ ÀÖÀ½) $ find / -nouser -o -nogroup -print ÀÚ½ÅÀÇ È¨ µð·ºÅ丮¿¡¼­ ÃÖ±Ù 3ÀÏ µ¿¾È º¯°æµÈ ÆÄÀϵéÀ» ãÀ» °æ¿ì $ find . -mtime -3 -print '/tmp'¿¡¼­ ÃÖ±Ù 5ÀÏ µ¿¾È º¯°æµÇÁö ¾ÊÀº ÆÄÀϵéÀ» ã¾Æ¼­ »èÁ¦ÇÒ °æ¿ì (ÆÄÀÏÀ» »èÁ¦ÇÒ ¶§¸¶´Ù »èÁ¦ÇÒ °ÍÀΰ¡¸¦ ¹°¾îº¸µµ·Ï) $ find . -mtime +5 -print -ok rm {} ; ÇöÀç µð·ºÅ丮 ¹Ø¿¡ ÀÖ´Â ¸ðµç Æ÷½ºÆ® ½ºÅ©¸³Æ® ÆÄÀÏ(.ps)À» ã¾Æ¼­ gzipÀ¸·Î ¾ÐÃàÀ» ÇÏ°í ±× ¸ñ·ÏÀ» result.txt¶ó´Â ÆÄÀÏ¿¡ ÀúÁ¤ÇÒ °æ¿ì $ find . -name "*.ps" -fprint result.txt -exec gzip {} ; Å©·¢Ä¿ÀÇ Ä§ÀÔÀÌ Àǽɽº·¯¿ö ÀÚ½ÅÀÇ ½Ã½ºÅÛ¿¡¼­ suid¿Í guid°¡ ¼³Á¤µÈ ÀÏ¹Ý ÆÄÀϵéÀ» ã¾Æ¼­ ±ÇÇÑÀ» È®ÀÎÇÒ °æ¿ì $ find / -type f -perm +6000 -print -ls ½Ã½ºÅÛ °ü¸®ÀÇ ½Ç¼ö·Î ÀÏ¹Ý »ç¿ëÀÚ°¡ ¾²±â ±ÇÇÑÀ» °®µµ·Ï ¼³Á¤µÇ¾î ÀÖ´Â ÆÄÀÏÀ» ã¾Æ¼­ ½ÇÇà ±ÇÇÑÀ» ¾ø¾Ö´Â °æ¿ì (´Ü, ¸µÅ© ÆÄÀÏÀº Á¦¿ÜÇÔ) $ find / -perm +2 ! -type l -print -exec chmod o-w {} ; ¿¹Á¦) ÇöÀç µð·ºÅ丮¿¡¼­ °¡Àå Å« ÆÄÀÏÀ» ã±â $ %find . -type f | xargs du -s | sort -n | tail -1 À§ ÇÑ ÁÙÀÇ ¸í·É¾î´Â ÇöÀç µð·ºÅ丮¿¡ ¼­ºê µð·ºÅ丮 Æ÷ÇÔÇÏ¿© °¡Àå Å« ÆÄÀÏÀ» Çϳª ã¾Æ¼­ À̸¦ Ãâ·ÂÇ϶ó´Â ÀǹÌÀÌ´Ù. °£È¤, ÆÄÀÏ ½Ã½ºÅÛÀÇ FULLÀÌ µÇ¾î¼­ °¡Àå Å­ ÆÄÀÏÀ» ãÀ¸·Á°í ÇÒ °æ¿ì ¾ÆÁÖ À¯¿ëÇÏ´Ù.