[LINUX] ๐ find ๋ช ๋ น์ด ์ ๋ณตํ๊ธฐ [ํ์ผ ๊ฒ์]
ํ์ผ/๋๋ ํ ๋ฆฌ ๊ฒ์
find๋ ๋ฆฌ๋ ์ค์์ ํ์ผ ๋ฐ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฒ์ํ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ค.
$ find [๊ฒฝ๋ก] [์ต์
] [ํํ์]
$ find [PATH] [OPTION] [EXPRESSION]
find ๋ช ๋ น์๋ ๋ช ๊ฐ์ง ์ต์ ๊ณผ ๋ง์ ์์ ํํ์(Expression)์ด ์กด์ฌํ๋๋ฐ, find ๋ช ๋ น์ ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์ง์ ๋ ํํ์์ ์กฐํฉ์ ๋ฐ๋ผ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ ํํ์์ ๋งค์ฐ ์์ฃผ ์ฌ์ฉ๋์ด ์ตํ๋ ํ์์ฑ์ด ์๋ค.
find ์ต์
-H ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ์ง ์๊ณ , Command Line Argument๋ฅผ ์ฒ๋ฆฌํ ๋ ์์ธ.
-L ์ฌ๋ณผ๋ฆญ ๋งํฌ์ ์ฐ๊ฒฐ๋ ํ์ผ์ ๋ณด ์ฌ์ฉ.
-P ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ์ง ์๊ณ , ๋งํฌ ์์ฒด ์ ๋ณด๋ฅผ ์ฌ์ฉ
-Olevel ์ฟผ๋ฆฌ ์ต์ ํ๋ฅผ ํ์ฑํํ๋ค. level : 0-3
-D [์ต์
] ๋๋ฒ๊น
๊ธฐ๋ฅ ์ฌ์ฉ.
help ๋๋ฒ๊น
์ต์
์ ์ค๋ช
.
exec -exec, -execdir, -ok, -okdir ๊ด๋ จ ์ง๋จ ์ ๋ณด๋ฅผ ํ์.
opt ์ต์ ํ์ ๊ด๋ จ๋ ์ง๋จ ์ ๋ณด ํ์.
rates ๊ฐ ์์ฑ์ ์ฑ๊ณตํ ๋น๋๋ฅผ ๋ํ๋
๋๋ค.
tree ํํ์ ํธ๋ฆฌ๋ฅผ ํ์.
search ๋๋ ํ ๋ฆฌ ํธ๋ฆฌ๋ฅผ ์์ธํ ํ์.
stat stat(2), lstat(2)์ ๋ํ ์ถ์ ์ ํธ์ถํ๋ค.
find ํํ์(expression) ์ ๋ฆฌ
ํํ์ | ์๋ฏธ |
-name | ์ฃผ์ด์ง ์ด๋ฆ์ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐพ๋๋ค (๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ์ต์
) $ find -name '*.txt' ํ์ฌ ๋๋ ํฐ๋ฆฌ ์ดํ์ ๋ชจ๋ ๋๋ ํฐ๋ฆฌ์์ .txt๋ก ๋๋๋ ํ์ผ ๋ฐ ๋๋ ํฐ๋ฆฌ๋ฅผ ์น ์ฐพ๋๋ค. |
-user | ์ง์ ํ ์ฌ์ฉ์์ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐพ๋๋ค (์์๊ฐ ์ด๋ฆ๊ฐ์ง๊ณ ์ฐพ์๋ค๋ฉด ์ด๊ฑฐ๋ ์ฌ์ฉ์ ๊ธฐ์ค) |
-group | ์ง์ ํ ๊ทธ๋ฃน ์์ ์ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐพ๋๋ค |
-uid | ์ง์ ํ UID์์ ์ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐพ๋๋ค (์์ด๋๋ฒํธ๋ก ์ฐพ๊ธฐ) |
-gid | ์ง์ ํ UID ์์ ์ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐพ๋๋ค (๊ทธ๋ฃน๋ฒํธ๋ก ์ฐพ๊ธฐ) |
-perm | ์ง์ ํ ํ๊ฐ๊ถ ๊ฐ์ ๊ฐ๋ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐพ๋๋ค (permission์ ์ฝ์) ex) -perm 755 : ํผ๋ฏธ์ ๊ฐ์ด 755๋ก ์ค์ ๋ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ |
-type | ์ง์ ํ ํ์ผ ์ ํ์ ์ฐพ๋๋ค. (ํ์ผ๋ง ์ฐพ๊ณ ์ถ์๋ ๋๋ ๋๋ ํฐ๋ฆฌ๋ง ์ฐพ๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค) d: ๋๋ ํฐ๋ฆฌ, f: ์ผ๋ฐ ํ์ผ, l: ๋งํฌ ํ์ผ, b: ๋ธ๋ก ๋๋ฐ์ด์ค, c: ์บ๋ฆญํฐ ๋๋ฐ์ด์ค, p:ํ์ดํ ๋๋ฐ์ด์ค, s:์์ผ ํ์ผ (์ฃผ๋ก -type f ์ต์ ์ด๋ -type d ์ต์ ์ ๋ง์ด ์ด๋ค) |
-atime n | access time ์ ๊ทผ ์๊ฐ ๊ธฐ์ค์ผ๋ก ์ฐพ๋๋ค. n : n์ผ ์ด์ ์ ์ ๊ทผํ ํ์ผ ์ฐพ๊ธฐ (exactly) +n : n๋ณด๋ค ์ค๋๋ ๋ ์๋ค ๊ธฐ์ค (greater), -n : n์ผ๋ถํฐ ์ง๊ธ๊น์ง ์ฆ n์ผ ๋ด์ ์ ๊ทผํ๋ ํ์ผ๋ค์ ๋ถ๋ฌ์ค๋ค. (less) |
-ctime n | change time ์์ ์๊ฐ ๊ธฐ์ค์ผ๋ก ์ฐพ๋๋ค |
-mtime n | modify time ๋ณ๊ฒฝ ์๊ฐ ๊ธฐ์ค์ผ๋ก ์ฐพ๋๋ค |
-mmin n | mmin์ ๋ถ์ด ๊ธฐ์ค (mtime์ ๊ธฐ์ค์ด day) |
-empty | ๋น ํ์ผ(ํ์ผ์ ํฌ๊ธฐ๊ฐ 0์ผ ๊ฒฝ์ฐ)์ด๋ ๋น ๋๋ ํฐ๋ฆฌ์ผ ๊ฒฝ์ฐ ์ถ๋ ฅ |
-exec | find๋ก ํ์ผ์ ์ฐพ๊ณ ๋ฐ๋ก ์ฐ๊ณํ์ฌ ์ด๋ ํ ๋ช
๋ น์ ๋ด๋ฆด ์ ์๋ ์ต์
. ๊ฒฐ๊ณผ๊ฐ์ {} ๊ธฐํธ๋ก ํ์ํ๊ณ \;๋ก ๋๋ด์ผ ํจ. |
-ls | 'ls -l'๊ณผ ๊ฐ์ ์ญํ |
-size n | n๋ธ๋ก ๊ธธ์ด์ ํ์ผ์ ์ฐพ๋๋ค. +n์ n๋ธ๋ก๋ณด๋ค ํฐ ํ์ผ์ ์ฐพ์ผ๋ฉฐ (greater) -n์ n๋ธ๋ก๋ณด๋ค ์์ ํ์ผ์ ์ฐพ๋๋ค (less) ๋ณดํต nc๋ผ๋ ํํ๋ก ๋ง์ด ์ฌ์ฉ๋๋๋ฐ n์ ๋ฌธ์ ๊ธธ์ด์ ํ์ผ์ ์๋ฏธํ๊ณ , c๋ character๋ฅผ ์๋ฏธํ์ฌ 1๋ฌธ์๋ 1๋ฐ์ดํธ์ด๋ฏ๋ก ๋ณดํต ๋ฐ์ดํธ ๋จ์๋ก ์ธ์ํด์ ์ฌ์ฉํ๋ค. |
-inum n | node๋ฒํธ๊ฐ n์ธ ํ์ผ ์ฐพ๊ธฐ |
-iname | ๋์๋ฌธ์ ๊ตฌ๋ณ ์ํ๊ณ ์ด๋ฆ์ผ๋ก๋ง ์ฐพ์ ๋ (insensitive์ ์ฝ์) |
-maxdepth n | ๊ฒ์ ์ ์ฃผ์ด์ง ์ ์๊ฐ n๋งํผ์ ์๋ธ ๋๋ ํฐ๋ฆฌ๋ง ๊ฒ์. (ํ์ฌ ๋ด ํด๋์์๋ถํฐ n ๊น์ด๊น์ง๋ง) |
-mindepth n | maxdepth์ ๋ฐ๋. |
-prune | ์ฐพ์ ๊ฒฐ๊ณผ ์ค ๋๋ ํฐ๋ฆฌ๊ฐ ํด๋น๋ ๋ ๊ทธ ๋๋ ํฐ๋ฆฌ ์ด๋ฆ๋ง ์ถ๋ ฅ (ํ์ ๋๋ ํฐ๋ฆฌ์ ํด๋น๋๋๊ฒ ์์ด๋ ๋ค์ด๊ฐ์ ์ฐพ์ง ์๋๋ค) |
-newer | ์ต์
๋ค์ ์ ํ ํ์ผ๋ณด๋ค ์ต๊ทผ์ ๋ณ๊ฒฝ๋ ํ์ผ์ ์ฐพ๋๋ค ex) find -newer 'abc.c' abcํ์ผ๋ณด๋ค ์ต๊ทผ์ ๋ณ๊ฒฝ๋ ํ์ผ์ ์ฐพ์ |
-cnewer | ์์ newer๊ฐ ๋ด์ฉ ๋ณ๊ฒฝ์ด๋ผ๋ฉด cnewer๋ผ๋ฉด ํ์ผ ์ํ |
2>/dev/null | ๋งจ ๋ค์ ์ด ์ต์ ์ ๋ถ์ด๋ฉด ํผ๋ฏธ์ ์ ๊ทผ ๋ถ๊ฐํ๊ฒ์ ํ๋ฉด์ ์ถ๋ ฅํ์ง ์๋๋ค. |
๊ฒ์๊ฒฐ๊ณผ๋ฅผ ํ์ผ์ ์ ๋๊ฒฝ๋ก๋ก ํ์. ๋ํดํธ ์ต์ ์ด๋ค. | |
-print0 | -print์ต์ ๊ณผ ๊ฐ์๋ฐ ๊ฒ์๊ฒฐ๊ณผ๋ฅผ ํ์ค๋ก ์ด์ด์ ํ์. |
ํํ์ ์ฐ์ฐ์ ์ข ๋ฅ
ํํ์ ์ฌ์ฉ ์ ์ฐ์ฐ์(Operator)๋ฅผ ์ฌ์ฉํ์ฌ "๋ ๊ฐ ์ด์์ ํํ์" ์กฐํฉ์ด ๊ฐ๋ฅํ๋ค
ํํ์ ์กฐํฉ | ์ค๋ช |
(expression) | expression ์ฐ์ ์์ ์ง์ . |
!expression -not expression |
expression ๊ฒฐ๊ณผ์ NOT ์ฐ์ฐ. |
expression -a expression expression -and expression expression expression |
expression ๊ฐ AND ์ฐ์ฐ. |
expression -o expression expression -or expression |
expression ๊ฐ OR ์ฐ์ฐ. |
find ๋ช ๋ น์์ ๋ ๊ฐ ์ด์์ ํํ์์ ์ฌ์ฉํ ๋ ์ฐ์ฐ์๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด, ๊ธฐ๋ณธ์ ์ผ๋ก -a (AND)๊ฐ ์ ์ฉ๋๋ค.
# ๋์ด ๊ฐ๋ค.
$ find -empty -print
$ find -empty -a -print
find ์ค์ ์์
ํ์ผ๋ช ์ผ๋ก ์ฐพ๊ธฐ (-name)
$ find # ํ์ฌ ๋๋ ํ ๋ฆฌ์ ํ์ผ ๋ฐ ๋๋ ํ ๋ฆฌ ์ถ๋ ฅ
$ find -print0 # ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ๋ด์ฉ์ ์ค ๋ฐ๊ฟ ์์ด ์ถ๋ ฅ.
$ find . -empty # ํ์ฌ ๊ฒฝ๋ก ํ์์์ ๋น ๋๋ ํฐ๋ฆฌ ํน์ ํฌ๊ธฐ๊ฐ 0์ธ ํ์ผ ๊ฒ์
$ find [PATH] # PATH์ ์๋ ํ์ผ ๋ฐ ๋๋ ํ ๋ฆฌ ๋ฆฌ์คํธ ํ์.
$ find . -name [FILENAME] # ํ์ฌ ๋๋ ํ ๋ฆฌ ์๋ ๋ชจ๋ ํ์ผ ๋ฐ ๋๋ ํ ๋ฆฌ ๊ฒ์.
$ find ~ -name [FILENAME] # ์ฌ์ฉ์์ ํ๋๋ ํฐ๋ฆฌ ํ์์์ ํ์ผ์ด๋ฆ ๊ฒ์
$ find . -name "STR*" # ์ง์ ๋ ๋ฌธ์์ด๋ก ์์ํ๋ ํ์ผ ๊ฒ์.
$ find . -name "*STR*" # ์ง์ ๋ ๋ฌธ์์ด์ด ํฌํจ๋ ํ์ผ ๊ฒ์.
$ find . -name "*STR" # ์ง์ ๋ ๋ฌธ์์ด๋ก ๋๋๋ ํ์ผ ๊ฒ์.
$ find . -name "B*" # B๋ก ์์ํ๋ ํ์ผ ๊ฒ์. ๊ฒฐ๊ณผ : ./B_FILE
$ find /user -name '*.txt' # /user ๋๋ ํ ๋ฆฌ์์ .txt ํ์ผ์ด๋ฆ์ผ๋ก ๋๋๋ ํ์ผ์ด๋ฆ ๊ฒ์
$ find . -name "*.EXT" -delete # ํ์ฅ์ ๊ฒ์ ํ ํ์ผ ์ญ์ .
ํ์ ์ผ๋ก ์ฐพ๊ธฐ (-type)
option | type |
f | regular file |
d | directory |
c | character special |
b | block special |
l | symbolic link |
s | socket |
p | fifo |
# ํ์ฌ ๊ฒฝ๋ก ํ์ ํ์ผ/๋๋ ํฐ๋ฆฌ/์ฌ๋ณผ๋ฆญ๋งํฌ์์ [NAME]์ ๊ฒ์
$ find . -name [NAME] -type f,d,l
# -type ์ข
๋ฅ
# b : block special
# c : character special
# d : directory
# f : regular file
# l : symbolic link
# p : FIFO
# s : socket
$ find . -name build -type f # build๋ผ๋ ์ด๋ฆ์ ์ผ๋ฐ ํ์ผ ๊ฒ์.
$ find . -name PROJ -type d # PROJ๋ผ๋ ์ด๋ฆ์ ๋๋ ํ ๋ฆฌ๋ง ๊ฒ์
ํ์ผ ํฌ๊ธฐ๋ก ์ฐพ๊ธฐ (-empty, -size)
์ต์ | ๋จ์ |
c | 1byte ๋จ์ |
b | 1block ๋จ์(1block = 512 bytes) |
w | 2 bytes ๋จ์ |
k | 1 kilobytes |
M | 1 metabytes |
G | 1 gigabytes |
# ํ์ฌ ๊ฒฝ๋ก ํ์์์ ํ์ผ ์ฌ์ด์ฆ๋ก ๊ฒ์
$ find . -size +[SIZE1]c -size -[SIZE2]c
# ํ์ผ ํฌ๊ธฐ ๊ฐ ๋ค์ 'c' ๋๋ 'k'๋ฅผ ๋ถ์์ผ๋ก์จ ๋ฐ์ดํธ ๋จ์ ๋๋ ํฌ๋ก๋ฐ์ดํธ์ ํฌ๊ธฐ ๊ฐ์ ์ง์
# b:block, c:bytes, w:2bytes, k:kbytes, M:mbytes, G:gbytes
# +(์ด๊ณผ) ๋๋ -(๋ฏธ๋ง)
$ find . -size 1024c # ํ์ผ ํฌ๊ธฐ๊ฐ 1024 ๋ฐ์ดํธ์ธ ํ์ผ ๊ฒ์.
$ find . -size +1024c # ํ์ผ ํฌ๊ธฐ๊ฐ 1024 ๋ฐ์ดํธ๋ฅผ ์ด๊ณผํ๋ ํ์ผ ๊ฒ์.
$ find . -size -1024c # ํ์ผ ํฌ๊ธฐ๊ฐ 1024 ๋ฐ์ดํธ ๋ฏธ๋ง์ธ ํ์ผ ๊ฒ์.
$ find . -size +1024c -size -2048c # ํ์ผ ํฌ๊ธฐ๊ฐ 1024 ๋ฐ์ดํธ ์ด๊ณผ, 2048 ๋ฐ์ดํธ ๋ฏธ๋ง์ธ ํ์ผ ๊ฒ์
# . ํ์ฌ ๋๋ ํ ๋ฆฌ์์ ํ์
์ด d(๋๋ ํ ๋ฆฌ) ์ธ ํ์ผ๋ค ์ค์ ์ฌ์ด์ฆ๊ฐ 100์ด์์ธ๊ฑธ ๊ฒ์
$ find . -type d -size +100
๊ฒ์ ๊ฒฐ๊ณผ ๋์ดํ๋ ๋ฐฉ๋ฒ (-print / -print0)
์ผ๋ฐ์ ์ผ๋ก print๊ฐ ๊ธฐ๋ณธ ์ต์
์ด๊ณ ๋ณ๋๋ก ์ง์ ํด์ฃผ์ง ์์ผ๋ฉด -print ๊ฐ ๋ค์ด๊ฐ๋ค.
์ฐพ์ ๋ด์ฉ์ด ํ๋ฉด์ผ๋ก ์ถ๋ ฅ๋๋ฉฐ ๊ฐ ๊ฒฐ๊ณผ๋ newline(๊ฐ ๋ผ์ธ์ด ๊ฐํ๋๋ฉฐ ๋ณด๊ธฐ์ข๊ฒ)์ผ๋ก ๋๋๋ค.
๋ฐ๋ฉด -print0 ์ ์ฌ์ฉํ๋ฉด ๊ฐ ๊ฒฐ๊ณผ๋ null ๋ฌธ์(\0)๋ก ๋๋๋ค.
์ด๋ ๊ฒ ํ๋ ์ด์ ๋ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ newline์ด๋ ๊ณต๋ฐฑ์ด ๋ค์ด๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ์ ํํ๊ฒ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฌ๋ ํ๋ฉด์ ๋ณด๊ธฐ์๋ ํ์ค๋ก ์ฒ๋ฆฌ๋์ด ์ข์ง๋ ์๋ค.
์ ๋ฆฌํ์๋ฉด, -print0 ์ ์ฐ๋ ๊ฒ์ ์ฐพ์ ํ์ผ๋ก ๋ค๋ฅธ ์ผ์ ํ ๋ ์ ํํ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํจ์ด๋ค.
$ find ./ -name "*.bak" -print
$ find ./ -name "*.bak" -print0
๊ฒ์๋ ํ์ผ์์ ์ถ๊ฐ ๋ช ๋ น ์คํํ๊ธฐ (-exec)
- {} : find ์์ ์ฐพ์๋ธ ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ํ๋์ฉ ๋ค์ด๊ฐ๋ ๋ถ๋ถ
- \; : -exec ๋ค์๋ถ๋ถ์ ๋์์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ผ๋ ๋ถ๋ถ
# ํ์ฌ ๋๋ ํ ๋ฆฌ์์ c ํ์ฅ์ ํ์ผ ์์ธ ์ ๋ณด ์ถ๋ ฅ. (ls ๋ช
๋ น ์คํ)
$ find . -name "*.c" -exec ls -l {} \;
# ํ์ฅ์๊ฐ c ์ธ ํ์ผ์ ๋ผ์ธ ์ ์ถ๋ ฅ. (wc ๋ช
๋ น ์คํ)
$ find . -name "*.c" -exec wc -l {} \;
# .c ํ์ผ์ ๋ฌธ์์ด main์ด ์๋์ง ๊ฒ์. (grep ๋ช
๋ น ์คํ)
$ find . -name "*.c" -exec grep "main" {} \;
# .java ํ์ผ์ ๋ฌธ์์ด class๊ฐ ์๋ ๋ผ์ธ ํ์.
$ find . -name "*.java" -exec grep -n "class" {} \;
# ๊ฒ์๋ ํ์ผ์ ํน์ [๊ฒฝ๋ก]๋ก ๋ณต์ฌ (cp ๋ช
๋ น ์คํ) > tar.gz ํ์ผ์ /mnt/usb/ ์ ๋ณต์ฌ
$ find . -name "*.tar.gz" -exec cp {} /mnt/usb/ \;
# ๋ชจ๋ c ํ์ผ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ source-list.txt์ ์ ์ฅ (์
์ถ๋ ฅ ์ฌ์ง์ redirection ">" ์คํ)
$ find . -name "*.c" > source-list.txt
$ find / -name "*.c" 2> /dev/null # ์๋ฌ ๋ฉ์์ง๋ฅผ ํ์ํ์ง ์์. (์
์ถ๋ ฅ ์ฌ์ง์ ๋ช
๋ น์ด ํฌ์คํธ ์ฐธ๊ณ ํ ๊ฒ)
# ๊ฒ์๋ ํ์ผ๋ก ์์ถํ์ผ ์์ฑ (tar ๋ช
๋ น ์คํ)
$ find . -name [NAME] -exec tar -xcvf [ํ์ผ๋ช
] {} \;
# test ๋๋ ํ ๋ฆฌ์์ ๊ถํ์ด rw-rw-r-- ์ธ ํ์ผ์ findํด์ (rm ๋ช
๋ น ์ํ)
$ find test -perm 664 -exec rm {} \;
+ ํ ( ๊ตฌ๋ถ์ + ์ \; ์ ์ฐจ์ด)
-exec ์ต์ ์ ์ ์ผ ๋์ ๊ตฌ๋ถ์๋ + ์ \; ์ด๋ ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋์ด์ ธ ์๋๋ฐ ์ฑ๋ฅ ๋ฉด์์ + ๊ฐ ๋ ์ข๋ค๊ณ ์๋ ค์ ธ ์๋ค.
์๋ํ๋ฉด \; ๋ฅผ ๋ง์ง๋ง ๊ตฌ๋ถ์๋ก ์ฌ์ฉํ๋ฉด ๊ฐ ํ์ผ์ ๋ํด ๋ณ๋์ ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ฒ ๋๋๋ฐ ์ด๋ก ์ธํด, RAM๊ณผ ์ฒ๋ฆฌ ์๊ฐ ๋ชจ๋์์ ์ฌ๊ฐํ ํ๋ํฐ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ตฌ๋ถ์ ๋ํ๊ธฐ ๊ธฐํธ '+' ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ํํ์์ ๊ฒฐ๊ณผ๊ฐ ์ฐ๊ฒฐ๋์ด ์ ์ฒด์ ์ผ๋ก ํ ๋ฒ๋ง ์คํ๋๋ -exec ๋ช ๋ น์ ์ ๋ฌ๋๋ค.
find -name 'ํ์ผ๋ช
*' -exec tar -cvfz ํ์ผ๋ช
.tar.gz {} \;
find -name 'ํ์ผ๋ช
*' -exec tar -cvfz ํ์ผ๋ช
.tar.gz {} +
ํน์ ํ์ผ ๊ถํ์ ๊ฐ์ง ํ์ผ์ ๊ฒ์ (-perm)
$ find . -perm 0664 # ํ์ฌ ๊ฒฝ๋ก์์ ํน์ ๊ถํ์ ํ์ผ/๋๋ ํฐ๋ฆฌ ๊ฒ์
# test ๋๋ ํ ๋ฆฌ์์ ๊ถํ์ด rw-rw-r-- ์ธ ํ์ผ์ findํด์ rm๋ช
๋ น ์ํ
$ find test -perm 664 -exec rm {} \;
์ ๊ทํํ์ ํจํด์ผ๋ก ํ์ผ๋ช ๊ฒ์ (-regex)
- -regex ์ต์ ์ ์ฌ์ฉํ๋ฉด grep์ฒ๋ผ ํ์ผ์ด๋ฆ์ ํจํด ๊ฒ์์ด ๊ฐ๋ฅํ๋ค
# ํ์ผ ์ด๋ฆ์ด ์ซ์.txt ์ธ ๊ฒ๋ค
find . -regex ".*/[0-9]+.txt"
ํน์ ์๊ฐ ์ดํ/์ด์ ์์ ๋ ํ์ผ (-mtime, -atime, -ctime)
- -mtime, -atime, -ctime ๋ฑ์ ์ฌ์ฉํ๋ฉด ์ ๊ทผ/์์ฑ/๋ณ๊ฒฝ ๋ฑ์ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ผ์ ์ฐพ์ ์ ์๋ค.
# ๋ง์ผ ํ์ฌ์๊ฐ์ด 10์ 10์ผ ์ด๋ผ๊ณ ๊ฐ์ ํ๋ค๋ฉด,
$ find -mtime -3 # 3์ผ(72์๊ฐ)๋ณด๋ค ์๋ก์ -> 10.7 ~
$ find -mtime 3 # 4์ผ(96์๊ฐ) ์ ์์ 3์ผ(72์๊ฐ)์ ๊น์ง -> 10.6 ~ 10.7
$ find -mtime +3 # 4์ผ(96์๊ฐ)์ ๋ณด๋ค ๊ณผ๊ฑฐ -> ~ 10.6
+ ๊ฐ๋ ์ด ๋ํดํ find ํ์์คํฌํ ์ต์ ์ ๋ํด์ ๋ฐ๋ก ์์ธํ ์ ๋ฆฌํด ๋ณด์๋ค.
[LINUX] ๐ find ๋ช ๋ น mtime ์ต์ +n, -n ๊ฐ๋ ์ ๋ฆฌ (ํ์์คํฌํ)
๋ฆฌ๋ ์ค ํ์์คํฌํ ๋ฆฌ๋ ์ค์์ ๋ค์ํ ์๊ฐ์ ๋ณด(Timestamps)๋ฅผ ๊ธฐ๋กํ๋๋ฐ inode ๋ผ๋ ๊ณณ์ ์ ์ฅ์ด ๋๋ค. inode์ ์ ์ฅ๋๋ ์๊ฐ์ ๋ณด๋ ctime, mtime, atime์ด ์กด์ฌํ๋ค. $ stat [ํ์ผ๋ช ] atime (access time,..
inpa.tistory.com
ํ์ ๋๋ ํ ๋ฆฌ ๋ฌด์ํ๊ธฐ (-prune)
$ find . -name "*๋ฌธ์*" -prune
์๋ธ ๋๋ ํ ๋ฆฌ ๋ด์ฉ ์ ํ ๊ฒ์ (-depth)
-
-maxdepth 1 : ์ต๋ ๋๋ ํ ๋ฆฌ ํ ๋จ๊ณ๋ง
-
-mindepth 1 : ๋ช ๋ นํ ์ง์ ๋ ๊ฒฝ๋ก(ํ ๋จ๊ณ)๋ฅผ ์ ์ธํ๊ณ ์ฐพ๊ธฐ
$ find . -maxdepth 1 -name [NAME] # ํ์ฌ ๊ฒฝ๋ก์์๋ง [NAME] ๊ฒ์ (ํ์ ๋๋ ํฐ๋ฆฌ ๋ฏธํฌํจ)
๋์ผ ์ด๋ฆ ํ์ผ ๋ชฉ๋ก ์ป๊ธฐ
$ find . -type f -printf "%f\n" | sort | uniq -c | grep -v ' 1 '
ํ์ ๋๋ ํ ๋ฆฌ์ ์กด์ฌํ๋ ํ์ผ ๊ฐฏ์
$ find */ | cut -d/ -f1 | uniq -c
# ์ฐธ๊ณ ์๋ฃ
https://recipes4dev.tistory.com/156
https://jhnyang.tistory.com/144
https://www.psjco.com/24