๋ฆฌ๋ ์ค(CentOS 7) ํ๊ฒฝ์์ ์ํ๋ ํ์ผ์ ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ์ฐพ๊ธฐ ์ํ
find๋ช ๋ น์ด์ ํ์ ์ต์ ์ ์ ๋ฆฌํฉ๋๋ค. ๋์๋ฌธ์ ๊ตฌ๋ถ ์๋ ๊ฒ์, ์ต๊ทผ ๋ณ๊ฒฝ๋ ํ์ผ ํ์, ๊ทธ๋ฆฌ๊ณxargs๋ฅผ ์กฐํฉํ ํ์ผ ๋ด์ฉ ๊ฒ์ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
Test Environment
- OS: CentOS 7 (3.10.0-957.el7.x86_64)
- Shell: Bash
1. ํ์ผ๋ช ์ผ๋ก ๊ฒ์ (By Name)
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์
๋๋ค. -name ์ต์
์ ์ ํํ ์ด๋ฆ์, -iname ์ต์
์ ๋์๋ฌธ์๋ฅผ ๋ฌด์ํ๊ณ ๊ฒ์ํฉ๋๋ค.
๊ธฐ๋ณธ ๊ฒ์
# ์ ์ฒด ๊ฒฝ๋ก(/)์์ Mem.sh ํ์ผ ์ฐพ๊ธฐ
find /sw -name "Mem.sh"
# ํ์ฌ ๋๋ ํ ๋ฆฌ(.)์์ ์ฐพ๊ธฐ
find . -name "Mem.sh"
๋์๋ฌธ์ ๋ฌด์ ๊ฒ์ (Insensitive)
ํ์ผ๋ช ์ ๋์๋ฌธ์๊ฐ ํ์คํ์ง ์์ ๋ ์ ์ฉํฉ๋๋ค.
# Mem.sh, MEM.sh ๋ชจ๋ ๊ฒ์๋จ
find /sw -iname "Mem.sh"
๊ฒ์ ๋์ค
Permission denied ๋ฉ์์ง๊ฐ ๋๋ฌด ๋ง์ด ๋ฌ๋ค๋ฉด ๋ช
๋ น์ด ๋ค์ 2>/dev/null์ ๋ถ์ฌ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ฒ๋ฆด ์ ์์ต๋๋ค.์:
find / -name "test" 2>/dev/null
2. ์์ ์๊ฐ์ผ๋ก ๊ฒ์ (By Time)
์ฅ์ ๋ฐ์ ์์ ์ด๋ ๋ก๊ทธ ๋ถ์ ์, ํน์ ์๊ฐ ๋ด์ ๋ณ๊ฒฝ๋ ํ์ผ์ ์ฐพ์ ๋ -mtime(Modification Time) ์ต์
์ ์ฌ์ฉํฉ๋๋ค.
์ฌ์ฉ ์์
# ์ต๊ทผ 1์ผ(24์๊ฐ) ์ด๋ด์ ์์ ๋ .sh ํ์ผ ๊ฒ์
find /sw -name "*.sh" -mtime -1
์ต์ ์์ธ ์ค๋ช
-mtime -n: ์ต๊ทผ n์ผ ์ด๋ด์ ๋ณ๊ฒฝ๋จ (Today)-mtime +n: n์ผ ์ด์ ์ ๋ณ๊ฒฝ๋จ (Old files)-mtime n: ์ ํํ n์ผ ์ ์ ๋ณ๊ฒฝ๋จ
3. ํ์ผ ๋ด์ฉ ๋ฌธ์์ด ๊ฒ์ (With Grep)
find๋ก ์ฐพ์ ํ์ผ๋ค์ ๋ด์ฉ(Content)์ ๊ฒ์ํ๊ณ ์ถ์ ๋, ํ์ดํ(|)์ xargs๋ฅผ ์ฌ์ฉํ์ฌ grep์ผ๋ก ๋๊ฒจ์ค๋๋ค.
๊ฒ์ ํ์ดํ๋ผ์ธ
[ํ์ผ ์ฐพ๊ธฐ] → [๋ชฉ๋ก ์ ๋ฌ] → [๋ด์ฉ ๊ฒ์]์ ํ๋ฆ์ ๋๋ค.
# 1์ผ ์ด๋ด ์์ ๋ sh ํ์ผ๋ค ์ค์์ "Mem"์ด๋ผ๋ ๊ธ์๊ฐ ํฌํจ๋ ๋ผ์ธ ์ถ๋ ฅ
find /sw -name "*.sh" -mtime -1 | xargs grep "Mem"
์คํ ๊ฒฐ๊ณผ ํด์
/sw/Mem.sh:MEMINFO=`cat /proc/meminfo...` <-- ํ์ผ๋ช
:๋ด์ฉ
/sw/Mem1.sh: TOTAL=`free | grep ^Mem...`
/sw/Mem1.sh: USED=`free | grep ^Mem...`
grep์ด find๊ฐ ์ฐพ์๋ธ ํ์ผ๋ค์ ํ๋์ฉ ์ด์ด์ "Mem" ํค์๋๊ฐ ์๋์ง ํ์ธํ๊ณ , ํด๋น ๋ผ์ธ์ ํ์ผ๋ช
๊ณผ ํจ๊ป ์ถ๋ ฅํด ์ค๋๋ค.
Next Step:
ํ์ผ์ ๋จ์ํ ์ฐพ๋ ๊ฒ์ ๋์ด, -exec ์ต์
์ ์ฌ์ฉํ์ฌ ๊ฒ์๋ ํ์ผ์ ๊ถํ์ ์ผ๊ด ๋ณ๊ฒฝ(chmod)ํ๊ฑฐ๋ ์ญ์ (rm)ํ๋ ๋ฑ์ ๊ณ ๊ธ ํ์ฉ๋ฒ์ ์ตํ๋ณด์ธ์.