find - bami74/me GitHub Wiki
* / ๋ ์ต์์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ปํจ. ๋ง์ฝ ์ฐพ๊ณ ์ ํ๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์๋ค๋ฉด ๊ทธ๊ฑธ๋ก ๋์ฒด
- ํ์ผ ์ด๋ฆ์ foobar ๊ฐ ๋ค์ด๊ฐ ํ์ผ ์ฐพ๊ธฐ
find / -name "foobar" -print
- ํน์ ์ฌ์ฉ์(foobar) ์์ ์ ํ์ผ์ ์ฐพ๊ธฐ
find / -user foobar -print | more
- ์ต๊ทผ ํ๋ฃจ๋์์ ๋ณ๊ฒฝ๋ ํ์ผ์ ์ฐพ๊ธฐ
find / -ctime -1 -a -type f | xargs ls -l | more
- ์ค๋๋ ํ์ผ(30์ผ ์ด์ ์์ ๋์ง ์์ ํ์ผ) ์ฐพ๊ธฐ
find / -mtime +30 -print | more
- ์ต๊ทผ 30์ผ์์ ์ ๊ทผํ์ง ์์ ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ณ๋์ ํ์ผ๋ก ๋ง๋ค๊ธฐ
find / ! ( -atime -30 -a ( -type d -o -type f ) ) | xargs ls -l > not_access.txt
- ํ์ ๋๋ ํฐ๋ฆฌ๋ก ๋ด๋ ค๊ฐ์ง ์๊ณ ํ์ฌ ๋๋ ํฐ๋ฆฌ์์๋ง ๊ฒ์ํ๊ธฐ
find . -prune ...
- ํผ๋ฏธ์
์ด 777 ์ธ ํ์ผ ์ฐพ๊ธฐ
find / -perm 777 -print | xargs ls -l | more
- others ์๊ฒ ์ฐ๊ธฐ(write) ๊ถํ์ด ์๋ ํ์ผ์ ์ฐพ๊ธฐ
find / -perm -2 -print | xargs ls -l | more
- others ์๊ฒ ์ฐ๊ธฐ(write) ๊ถํ์ด ์๋ ํ์ผ์ ์ฐพ์ ์ฐ๊ธฐ ๊ถํ์ ์์ ๊ธฐ
find / -perm -2 -print | xargs chmod o-w
๋๋
find / -perm -2 -exec chmod o-w {} ; -print | xargs ls -l | more
- ์ฌ์ฉ์์ด๋ฆ๊ณผ ๊ทธ๋ฃน์ด๋ฆ์ด ์๋ ํ์ผ ์ฐพ๊ธฐ
find / ( -nouser -o -nogroup ) -print | more
- ๋น ํ์ผ(ํฌ๊ธฐ๊ฐ 0 ์ธ ํ์ผ) ์ฐพ๊ธฐ
find / -empty -print | more
๋๋
find / -size 0 -print | more
- ํ์ผ ํฌ๊ธฐ๊ฐ 100M ์ด์์ธ ํ์ผ์ ์ฐพ๊ธฐ
find / -size +102400k -print | xargs ls -hl
- ๋๋ ํฐ๋ฆฌ๋ง ์ฐพ๊ธฐ?
find . -type d ...
- root ๊ถํ์ผ๋ก ์คํ๋๋ ํ์ผ ์ฐพ๊ธฐ
find / ( -user root -a -perm +4000 ) -print | xargs ls -l | more
- ๋ค๋ฅธ ํ์ผ์์คํ
์ ๊ฒ์ํ์ง ์๊ธฐ
find / -xdev ...
- ํ์ผ ์ด๋ฆ์ ๊ณต๋ฐฑ์ด ๋ค์ด๊ฐ ํ์ผ ์ฐพ๊ธฐ
find / -name "* *" -print
- ์จ๊ฒจ์ง(hidden) ํ์ผ์ ์ฐพ๊ธฐ
find / -name ".*" -print | more
- *.bak ํ์ผ์ ์ฐพ์ ์ง์ฐ๊ธฐ
find / -name "*.bak" -exec rm -rf {} ;
- *.bak ํ์ผ์ ์ฐพ์ ํน์ ๋๋ ํฐ๋ฆฌ๋ก ์ฎ๊ธฐ๊ธฐ
mv `find . -name "*.bak"` /home/bak/
- ์ฌ๋ฌ๊ฐ์ ํ์ผ์์ ํน์ ๋ฌธ์์ด์ ๋ฐ๊พธ๊ธฐ
find / -name "*.txt" -exec perl -pi -e 's/์ฐพ์๋ฌธ์์ด/๋ฐ๊ฟ๋ฌธ์์ด/g' {} ;
- ํน์ ๋๋ ํ ๋ฆฌ ํ์์ ๋ชจ๋ ํ์ผ์ ๋ค์ ธ์ ํน์ ๋ฌธ์์ด์ด ๋ค์ด ์๋ ํ์ผ ์ฐพ๊ธฐ
find . | xargs grep csh : .์ ํ์ฌ๋๋ ํ ๋ฆฌ ์ด๋ฏ๋ก ํ์ฌ ๋๋ ํ ๋ฆฌ ํ์์ ๋ชจ๋ ํ์ผ์์ csh๊ธ์๋ฅผ grep
find /user/ | xargs grep csh ๋ก ํ๋ฉด ๋น์ฐ /user/ ์๋์ ๋ชจ๋ ํ์ผ์ด ๋์์ด ๋๊ฒ ์ ธ.
------------------------------------------
find ๋ช
๋ น์ด๋ ํ์ผ ์์คํ
์์ ์ฃผ์ด์ง ์กฐ๊ฑด์ผ๋ก ํ์ผ์ ์ฐพ์ ๋ ์์ฃผ ์ ์ฉํ๊ฒ ์ฐ์
๋๋ค. ๋ํ์ ์ธ ์ฉ๋๋ ์ค๋๋๊ฑฐ๋ ํฌ๊ฑฐ๋, ์ฌ์ฉํ์ง ์๋ ํ์ผ๋ค์ ์ฐพ์ ๋ ๊ทธ ์๋ ฅ์ ๋ฐํํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
# find path operators
# find ๋์๋๋ ํ ๋ฆฌ ๊ฒ์์กฐ๊ฑด ์ฒ๋ฆฌ๋ฐฉ๋ฒ
๊ฒ์์ข
๋ฅ -name filename filename ํ์ผ ์ด๋ฆ์ผ๋ก ์ฐพ๋๋ค.
-user username user์ด๋ฆ์ผ๋ก ์ฐพ๋๋ค.
-group groupname group ์ด๋ฆ์ผ๋ก ์ฐพ๋๋ค.
-perm nnn ํ์ผ ๊ถํ์ด nnn์ธ ํ์ผ์ ์ฐพ๋๋ค. (ex. -perm 755)
-type x ํ์ผ ํ์
์ด x์ธ ํ์ผ๋ค์ ์ฐพ๋๋ค.
( f : ์ผ๋ฐํ์ผ, b : ๋ธ๋ก ํน์ํ์ผ, d: ๋๋ ํ ๋ฆฌ, l : ์ฌ๋ณผ๋ฆญ ๋งํฌ ๋ฑ. )
-atime +n access time ์ด n์ผ ์ด์ ์ธ ํ์ผ์ ์ฐพ๋๋ค.
-atime -n access time์ด n์ผ ์ด๋ด์ธ ํ์ผ์ ์ฐพ๋๋ค.
-mtime +n n์ผ ์ด์ ์ ๋ณ๊ฒฝ๋ ํ์ผ์ ์ฐพ๋๋ค.
-mtime -n n์ผ ์ด๋ด์ ๋ณ๊ฒฝ๋ ํ์ผ์ ์ฐพ๋๋ค.
-size n ์ฌ์ด์ฆ๊ฐ n์ด์์ธ ํ์ผ๋ค์ ์ฐพ๋๋ค.
-links n ๋งํฌ๋ ๊ฐ์๊ฐ n์ธ ํ์ผ๋ค์ ์ฐพ๋๋ค.
-print ํ์ค์ถ๋ ฅ
-exec command command ์คํ.
-operator -a and ์ฐ์ฐ, -o or ์ฐ์ฐ, ! not ์ฐ์ฐ, ๏ผผ( expression ๏ผผ)
๋ช๊ฐ์ง ์๋ฅผ ๋ค์ด ์ค๋ช
๋๋ฆฌ๊ฒ ์ต๋๋ค.
$ find /home. -name ping -print
root ๋๋ ํ ๋ฆฌ ๋ฐ์์ ํ์ผ์ด๋ฆ์ด ping์ธ ํ์ผ์ ์ฐพ์ ์ ๋ ๊ฒฝ๋ก๋ช
์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
$ find /home -name test* -print
/home ์๋์์ ํ์ผ์ด๋ฆ์ด test๋ก ์์ํ๋ ๋ชจ๋ ํ์ผ์ ์ฐพ์์ ํ๋ฉด์ ๋ณด์ฌ์ค๋๋ค.
$ find /home -name *.c -print
/home ๋ฐ์ ์ด๋ฆ์ด .c๋ก ๋๋๋ ๋ชจ๋ ํ์ผ๋ค์ ์ฐพ์ ๊ฒฝ๋ก๋ช
์ ๋ณด์ฌ์ค๋ค.
$ find /home -name who.txt -print
home ๋๋ ํ ๋ฆฌ ์๋์ who.txt๋ผ๋ ํ์ผ์ ์ฐพ์ ๊ฒฝ๋ก๋ช
์ ๋ณด์ฌ์ค๋ค.
$ find /home -name core -size +2048 -print
ํ์ผ ์ด๋ฆ์ด core์ด๊ณ ํฌ๊ธฐ๊ฐ 2048๋ธ๋ญ ์ด์์ธ ํ์ผ์ ์ฐพ์์ค๋ค.
$ find /home -name core -exec ls -l {} ๏ผผ;
์ด๋ฆ์ด core์ธ ํ์ผ์ ์ฐพ์์ ls -l ํ๋ค.
$ find /home -name core -exec rm -i {} ๏ผผ;
ํ์ฌ ๋๋ ํ ๋ฆฌ ๋ฐ์์ ์ด๋ฆ์ด core์ธ ํ์ผ์ ์ฐพ์ ์ง์ด๋ค(์ง์ฐ๊ธฐ ์ ์ ์ ๋ง ์ง์ธ ์ง๋ฅผ ๋ฌผ์ด๋ณธ๋ค.)
$ find /home -user unix01 -print
ํ์ผ ์์ ์๊ฐ unix01์ธ ํ์ผ์ ์ฐพ์์ค๋ค.
$ find /home -group unix -print
์ฌ์ฉ์๊ทธ๋ฃน์ด unix์ธ ํ์ผ์ ์ฐพ์์ค๋ค.
$ find /home -perm 700 -print
ํ์ผ ๊ถํ์ด 700์ธ ํ์ผ์ ์ฐพ์์ค๋ค.
$ find /home ๏ผผ ( -perm 400 -o -perm 200 ) -print
ํ์ผ ๊ถํ์ด 400์ธ ํ์ผ๊ณผ 200์ธ ํ์ผ์ ์ฐพ์์ค๋ค. (์ฃผ์ : โ๏ผผโ์ ์๋ค์ space ๊ฐ ๋ฐ๋์ ์์ด์ผ ํ๋ค.)
$ find /home -type d -print
ํ์ผ ํ์
์ด d์ธ ํ์ผ์ ์ฐพ์ ๊ฒฝ๋ก๋ช
์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
$ find /home -type c -print
/dev๋๋ ํ ๋ฆฌ ์๋์์ ํ์ผ ํ์
์ด c์ธ ํ์ผ์ ์ฐพ์ ๊ฒฝ๋ก๋ช
์ ๋ณด์ฌ ์ค๋ค.
$ find /home -atime +30 -print
30์ผ ์ด์ ์ ์ต์ธ์ค๋์๋ ํ์ผ์ ์ฐพ๋๋ค.
$ find /home -mtime -7 -print
7์ผ ์ด๋ด์ ์์ ๋ ์ ์ด ์๋ ํ์ผ์ ์ฐพ๋๋ค.
$ find /home -size +1024 -print
ํ์ผ์ ๋ธ๋ญ ํฌ๊ธฐ๊ฐ 1024 ์ด์์ธ ํ์ผ์ ์ฐพ์์ค๋ค.
$ find /home -name *.bak -exec rm -rf {} ๏ผผ;
ํ์ผ ์ด๋ฆ์ด .bak ๋ก ๋๋๋ ํ์ผ์ ์ฐพ์์ ์ง์ด๋ค.
$ find /home -name ๏ผผ*.c -atime +30 -exec ls -l {} ๏ผผ;
30์ผ ์ด์ ์ ์ต์ธ์ค๋ ํ์ผ ์ค *.c๋ฅผ ์ฐพ์ ls -l ํ๋ค.
โ find ๋ช
๋ น๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ณธ์ ์ธ ์ต์
์ฌํญ๋ค
-------------------------------------------------------------------------------
์ ๊ฐ/๋์
-------------------------------------------------------------------------------
-name pattern ํ์ผ์ ์ด๋ฆ์ด pattern๊ณผ ์ผ์นํ๋ฉด ์ฐธ,
pattern์ ์
ธ ๋ฉํ๋ฌธ์ *,[] ?๋ฅผ ํฌํจํ ์ ์๋ค.
-perm oct ํ์ผ์ ํ๊ฐ ํ๋๊ทธ์ 8์ง์ ํํ์ด oct์ ์ผ์นํ๋ฉด ์ฐธ
-type ch ํ์ผ์ ์ ํ์ด ch(b=block, c=char๋ฑ)์ด๋ฉด ์ฐธ
-user userId ํ์ผ์ ์์ ์๊ฐ userId์ด๋ฉด ์ฐธ
-group groupId ํ์ผ์ ๊ทธ๋ฃน์ด groupId์ด๋ฉด ์ฐธ
-atime count ํ์ผ์ด count ๋ ์ ์ด๋ด์ ์ ๊ทผ๋์์ผ๋ฉด ์ฐธ
-mtime count ํ์ผ์ ๋ด์ฉ์ด count ๋ ์ ์ด๋ด์ ์์ ๋์์ผ๋ฉด ์ฐธ
-ctime count ํ์ผ์ ๋ด์ฉ์ด count ๋ ์ ์ด๋ด์ ์์ ๋์๊ณ , ํ์ผ์ ์์ฑ์ด ๋ฐ๋์์ผ๋ฉด ์ฐธ
-exec cmd ์ํ์ค์ธ command์ ์ข
๋ฃ ์ฝ๋๊ฐ 0์ด๋ฉด ์ฐธ. ๋ช
๋ น์ \; ์ ์ํด์ ๋๋ด์ผํ๋ค.
๋ง์ผ {}๋ฅผ ๋ช
๋ น์ ์ธ์๋ก ์ง์ ํ๋ฉด, ํ์ฌ ํ์ผ์ ์ด๋ฆ์ผ๋ก ์นํ
-print ํ์ฌ ํ์ผ๋ช
์ ํ๋ฆฐํธํ๊ณ ์ฐธ๊ฐ์ ๋ฐํ
-ls ํ์ฌ ํ์ผ์ ์์ฑ์ ๋ณด์ฌ์ฃผ๊ณ ์ฐธ๊ฐ์ ๋ฐํ
-cpio device ํ์ฌ ํ์ผ์ cpio ํ์์ผ๋ก device์ ์ฐ๊ณ ์ฐธ๊ฐ์ ๋ฐํ
-!expression expression์ ๋
ผ๋ฆฌ ๋ถ์ ์ ๋ฐํ
exp1 [-a] expr2 ๋จ์ถํ and: ๋ง์ผ expr1์ด ๊ฑฐ์ง์ด๋ฉด ๊ฑฐ์ง์ ๋๋ ค์ฃผ๊ณ , expr2๋ ์ํํ์ง ์๊ณ ,
๋ง์ผ expr1์ด ์ฐธ์ด๋ฉด expr2์ ๊ฐ์ ๋ฐํ
expr1 -o expr2 ๋จ์ถํ or: ๋ง์ผ expr1์ด ์ฐธ์ด๋ฉด ์ฐธ์ ๋ฐํ.
๋ง์ผ expr1ใ
ฃ ๊ฑฐ์ง์ด๋ฉด expr2์ ๊ฐ์ ๋ฐํ
--------------------------------------------------------------------------------------------
โ find ๋์ ์์
--------------------------------------------------------------------------------------------
- [root@rootman /root]# find / -name "*.c" -print
: ์ต์์ ๋๋ ํ ๋ฆฌ๋ก ๋ถํฐ ๋ชจ๋ C ์์ค๋ฅผ ์ถ๋ ฅ
- [root@rootman /root]# find / -mtime 5 -ls
: ์ต์์ ๋๋ ํ ๋ฆฌ์์ 5์ผ๋์ ์์ ๋ ํ์ผ๋ค์ ํ์
- [root@rootman /root]# find / -name "*.bak" -exec rm -f {} \; 2>/dev/null
: ์ต์์ ๋๋ ํ ๋ฆฌ๋ก๋ถํฐ bak๋ก ๋๋๋ ํ์ผ๋ค์ ์ญ์ ์ฒ๋ฆฌํจ
- [root@rootman /root]# find / \(-name "*.c" -o -name "*.bak" \) -print
: ์ต์์ ๋๋ ํ ๋ฆฌ์์ *.c ๋ *bak ํ์ผ๋ก ๋๋๋ ๋ชจ๋ ํ์ผ๋ค์ ์ด๋ฆ์ ์ถ๋ ฅ
- [root@rootman /root]# find / -name "*.o" -o -name "*.tmp"
: ํ์ผ ์ด๋ฆ์ด *.o ๋๋ *.tmp ์ ์ผ์นํ๋ ํ์ผ๋ค์ ๋ํด์ ์ฐธ์ผ๋ก ํ๊ฐ
- [root@rootman /root]# find / -type f -atime +30 -print
: 30์ผ ์ด์ ์ฝํ์ง์ง ์์ ๋ชจ๋ ํ์ผ๋ค์ ์ถ๋ ฅํ๋ค
- [root@rootman /root]# find / -atime +5 \( -name "*.o" -o -name "*.tmp" \)
: access ์๊ฐ์ด 5์ผ ์ด์์ด๊ณ ์ด๋ฆ์ด .o ๋ .tmp ๋ก ๋๋๋ค.
- [root@rootman /root]# find / ! -atime +5 \( -name "*.o" -o -name "*.tmp" \)
: 4๋ฒ๊ณผ์ ๋ฐ๋๋ก ์ ๊ฒฐ๊ณผ๋ฅผ ์ป๋๋ค.