리눅스 find 명령어: -name, -type, -size, -mtime 옵션과 -delete

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)
테스트 환경RHEL 계열AlmaLinux 9.8findutils 4.8root 계정Debian 12 · findutils 4.9 일반 계정2026-10-31 확인

리눅스 find 명령어는 시작 폴더 아래를 차례로 내려가며 이름과 종류, 크기, 수정 시각, 권한 같은 조건에 맞는 파일과 폴더를 찾는 명령어입니다. AlmaLinux 9 서버의 시험 폴더에 파일 열 개를 만들어 조건을 하나씩 바꿔 실행한 결과, 찾은 파일을 -exec로 다른 명령에 넘기고, 지울 때는 -delete 전에 같은 조건으로 목록부터 확인하게 되었습니다.

결과 상자의 시험 폴더 경로와 파일 시각은 예시 값으로 바꿨습니다. Debian 12 서버의 출력은 홈 폴더 경로만 예시 값이고 나머지는 그대로 옮겼습니다.

1️⃣ 리눅스 find 명령어 사용법

  • ↪️ 시작 경로와 -name, -iname

기본 꼴은 [find 시작경로 조건]입니다. 시작 경로를 적지 않으면 지금 폴더(.)에서 찾고, 조건을 적지 않으면 시작 경로 아래의 파일과 폴더를 모두 출력합니다.

시험은 아래처럼 폴더 셋과 파일 열 개를 만든 /root/work에서 진행했습니다.

/root/work
docs/
readme.txt450바이트 · 3일 전
guide.txt5,000바이트
old.tmp64바이트 · 10일 전
logs/
app.log2MB
cache.tmp512바이트 · 10일 전
backup/빈 폴더
report.txt1,200바이트
README.md300바이트 · 3일 전
run.sh18바이트 · 권한 755
my notes.txt150바이트 · 3일 전 · 권한 600
empty.txt0바이트
find /root/work
/root/work
/root/work/docs
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/docs/old.tmp
/root/work/logs
/root/work/logs/app.log
/root/work/logs/cache.tmp
/root/work/backup
/root/work/report.txt
/root/work/README.md
/root/work/run.sh
/root/work/my notes.txt
/root/work/empty.txt

find는 결과를 이름순으로 정렬하지 않으며, 이번 실행에서는 docs 폴더를 만나자 그 안의 파일을 먼저 모두 출력한 뒤 logs로 넘어갔습니다.

조건을 여러 개 이어 적으면 모두 맞는 파일만 남습니다.

-name은 경로가 아닌 파일 이름만 패턴과 비교합니다. 패턴을 작은따옴표로 감싸야 셸이 *를 먼저 펼치지 않고 find에 그대로 넘깁니다.

find /root/work -name '*.txt'
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/report.txt
/root/work/my notes.txt
/root/work/empty.txt

-name은 대소문자를 구분합니다. readme로 시작하는 이름을 찾자 docs/readme.txt만 나왔고, -iname으로 바꾸자 README.md도 함께 나왔습니다.

find /root/work -name 'readme*'
/root/work/docs/readme.txt
find /root/work -iname 'readme*'
/root/work/docs/readme.txt
/root/work/README.md

find는 findutils 패키지에 들어 있습니다. [find --version]의 첫 줄로 확인한 버전은 AlmaLinux 9.8 서버가 findutils 4.8, Debian 12 서버가 4.9였습니다.

2️⃣ find -type d와 -maxdepth

  • ↪️ 파일·폴더 고르기와 검색 깊이

-type f는 일반 파일만, -type d는 폴더만 남깁니다.

find /root/work -type d
/root/work
/root/work/docs
/root/work/logs
/root/work/backup

시작 경로인 /root/work도 폴더라 첫 줄에 함께 나왔습니다. 같은 경로에서 -type f로 바꾸자 파일 열 개가 모두 나왔습니다.

-maxdepth는 시작 경로에서 몇 단계 아래까지 내려갈지 정합니다. -maxdepth 1로 실행하자 docs와 logs 안의 파일은 빠지고 /root/work 바로 아래 파일 다섯 개만 남았습니다.

find /root/work -maxdepth 1 -type f
/root/work/report.txt
/root/work/README.md
/root/work/run.sh
/root/work/my notes.txt
/root/work/empty.txt

반대로 -mindepth 2는 시작 경로 바로 아래를 건너뛰어, 하위 폴더 안의 파일 다섯 개만 출력했습니다.

find /root/work -mindepth 2 -type f
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp

man 페이지는 -maxdepth 같은 전역 옵션을 시작 경로 바로 뒤에 적도록 안내합니다. -type f 뒤에 -maxdepth 1을 적어도 결과는 앞과 같은 다섯 파일이었으며, 터미널에서 실행하면 전역 옵션을 앞에 적으라는 경고 한 줄이 함께 나옵니다(man 페이지 기준).

폴더나 파일이 몇 개인지만 확인할 때는 출력을 wc -l로 넘깁니다. -type d 출력을 세자 시작 경로를 포함해 4가 나왔습니다.

find /root/work -type d | wc -l
4

-maxdepth 1을 붙여도 4가 나왔습니다. 하위 폴더 셋이 모두 시작 경로 바로 아래에 있기 때문입니다.

find /root/work -maxdepth 1 -type d | wc -l
4

-mindepth 2로 하위 폴더 안의 파일만 세자 5가 나왔습니다.

find /root/work -mindepth 2 -type f | wc -l
5

3️⃣ find 명령어 크기·시간 조건

  • ↪️ -size, -mtime, -mmin, -newer, -empty

숫자 앞의 +는 그 값보다 큼, -는 그 값보다 작음을 의미하며, 부호가 없으면 정확히 그 값입니다. -size의 단위는 아래 표와 같습니다(man 페이지 기준).

단위크기예
c1바이트-size +500c
k1,024바이트-size +1k
M1,048,576바이트-size +1M
G1,073,741,824바이트-size +1G
(없음)512바이트 블록-size +2
find /root/work -type f -size +1k
/root/work/docs/guide.txt
/root/work/logs/app.log
/root/work/report.txt

1k보다 큰 파일은 5,000바이트인 guide.txt와 2MB인 app.log, 1,200바이트인 report.txt였습니다.

find /root/work -size +1M
/root/work/logs/app.log

-size를 두 번 이어 적어 범위를 정하자, 1k보다 크고 100k보다 작은 두 파일만 남았습니다.

find /root/work -type f -size +1k -size -100k
/root/work/docs/guide.txt
/root/work/report.txt

-size는 크기를 단위로 나눈 뒤 올림해서 비교합니다. 그래서 300바이트인 README.md도 1k로 계산되어, -size -1k에는 크기가 0인 empty.txt만 나왔습니다.

find /root/work -type f -size -1k
/root/work/empty.txt

시간 조건을 보기 위해 README.md, my notes.txt, docs/readme.txt는 3일 전으로, .tmp 파일 두 개는 10일 전으로 수정 시각을 맞춰 두었습니다. 파일마다 접근, 수정, 변경 세 가지 시각이 남으며, stat 명령어로 확인할 수 있습니다.

-mtime은 마지막으로 수정한 뒤 지난 시간을 24시간 단위로 셉니다. -mtime -1에는 24시간 안에 만든 파일 다섯 개가 나왔습니다.

find /root/work -type f -mtime -1
/root/work/docs/guide.txt
/root/work/logs/app.log
/root/work/report.txt
/root/work/run.sh
/root/work/empty.txt

-mtime +7에는 10일 전으로 맞춘 .tmp 파일 두 개만 나왔습니다. 오래된 로그나 임시 파일을 지우기 전에 목록을 확인할 때 이 꼴을 사용합니다.

find /root/work -type f -mtime +7
/root/work/docs/old.tmp
/root/work/logs/cache.tmp

-mmin은 같은 계산을 분 단위로 합니다. -mmin -60으로 실행한 결과는 -mtime -1과 같은 다섯 파일이었습니다.

find /root/work -type f -mmin -60
/root/work/docs/guide.txt
/root/work/logs/app.log
/root/work/report.txt
/root/work/run.sh
/root/work/empty.txt

-newer는 기준 파일보다 나중에 수정한 파일을 찾습니다. 3일 전으로 맞춘 README.md를 기준으로 실행하자 그 뒤에 만든 파일 다섯 개가 나왔습니다.

find /root/work -type f -newer /root/work/README.md
/root/work/docs/guide.txt
/root/work/logs/app.log
/root/work/report.txt
/root/work/run.sh
/root/work/empty.txt

-empty는 크기가 0인 파일과 안이 빈 폴더를 함께 찾아, 빈 폴더 backup과 empty.txt가 나왔습니다.

find /root/work -empty
/root/work/backup
/root/work/empty.txt

4️⃣ find -perm과 -user 조건

  • ↪️ 권한·소유자로 찾기와 조건 묶기

-perm 뒤에 숫자만 적으면 권한이 정확히 그 값인 파일을 찾습니다. -perm 644로 실행하자 755인 run.sh와 600인 my notes.txt는 빠지고 여덟 개가 나왔습니다.

find /root/work -type f -perm 644
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp
/root/work/report.txt
/root/work/README.md
/root/work/empty.txt

모드 앞에 -를 붙이면 적은 권한이 모두 들어 있는 파일을 찾습니다. 소유자 실행 권한(u+x)이 있는 파일은 run.sh 하나였습니다.

find /root/work -type f -perm -u+x
/root/work/run.sh

모드 앞에 /를 붙이면 적은 권한 중 하나만 있어도 찾습니다. 6000은 SUID(4000)와 SGID(2000)를 더한 값으로, 실행하는 순간 소유자나 그룹의 권한으로 동작하는 파일을 서버에서 점검할 때 이 꼴을 사용합니다.

시험 폴더에는 해당하는 파일이 없어, run.sh에 SUID를 준 뒤 실행하자 run.sh 하나가 나왔습니다.

chmod u+s /root/work/run.sh
find /root/work -type f -perm /6000
/root/work/run.sh

오래된 자료에는 같은 자리에 -perm +6000이 적혀 있습니다. 그대로 실행하자 [invalid mode] 오류로 끝났습니다.

find /root/work -type f -perm +6000
find: invalid mode '+6000'

+ 꼴은 findutils 4.5.12에서 제거되었으므로(man 페이지 기준) /로 적습니다. 시험용으로 준 SUID는 chmod u-s로 지웠습니다.

-user는 소유자 이름으로 거릅니다. 시험 파일은 모두 root 소유라 -user root만으로는 걸러지는 파일이 없어, -name으로 .log 파일을 함께 고르자 app.log 하나가 나왔습니다.

find /root/work -type f -user root -name '*.log'
/root/work/logs/app.log

-nouser는 소유자 UID에 맞는 계정이 없는 파일을 찾습니다. 계정을 지운 뒤 서버에 남은 파일을 점검할 때 사용하며, guide.txt의 소유자를 없는 UID인 1500으로 바꾼 뒤 실행하자 guide.txt 하나가 나왔습니다.

chown 1500:1500 /root/work/docs/guide.txt
find /root/work -nouser
/root/work/docs/guide.txt

-nogroup은 같은 확인을 소유 그룹으로 하며, 그룹도 1500으로 바꾼 guide.txt가 나왔습니다. 시험이 끝난 뒤 chown root:root로 되돌렸습니다.

조건 사이에 -o를 넣으면 둘 중 하나만 맞아도 됩니다. -type f 같은 다른 조건과 함께 쓸 때는 -o로 잇는 조건을 괄호로 묶습니다. 괄호는 셸이 먼저 해석하지 않도록 앞에 역슬래시를 붙이고, 괄호와 조건 사이는 띄어 적습니다.

find /root/work -type f \( -name '*.log' -o -name '*.tmp' \)
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp

!는 바로 뒤의 조건을 뒤집습니다. .txt가 아닌 파일을 찾자 다섯 개가 나왔습니다.

find /root/work -type f ! -name '*.txt'
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp
/root/work/README.md
/root/work/run.sh

5️⃣ find -exec 활용

  • ↪️ {} \;와 {} +의 차이, 권한 일괄 변경, grep 조합

-exec는 찾은 파일마다 뒤에 적은 명령을 실행하며, {} 자리에 찾은 경로가 들어갑니다. 명령 끝의 ;는 셸이 명령 구분 기호로 먼저 읽지 않도록 \;로 적습니다.

find /root/work -name '*.log' -exec ls -l {} \;
-rw-r--r-- 1 root root 2097152 Oct  5 14:10 /root/work/logs/app.log

끝을 \; 대신 +로 적으면 찾은 경로를 한꺼번에 모아 명령을 한 번만 실행합니다. echo로 비교해 보니 \;는 경로 다섯 개를 다섯 줄로, +는 한 줄로 출력했습니다.

find /root/work -name '*.txt' -exec echo {} \;
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/report.txt
/root/work/my notes.txt
/root/work/empty.txt
find /root/work -name '*.txt' -exec echo {} +
/root/work/docs/readme.txt /root/work/docs/guide.txt /root/work/report.txt /root/work/my notes.txt /root/work/empty.txt

ls처럼 경로를 여러 개 받는 명령은 +로 묶어 실행 횟수를 줄입니다. 1k보다 큰 파일 세 개의 크기를 ls -lh 한 번으로 확인했습니다.

find /root/work -type f -size +1k -exec ls -lh {} +
-rw-r--r-- 1 root root 4.9K Oct  5 14:10 /root/work/docs/guide.txt
-rw-r--r-- 1 root root 2.0M Oct  5 14:10 /root/work/logs/app.log
-rw-r--r-- 1 root root 1.2K Oct  5 14:10 /root/work/report.txt

웹 폴더의 권한을 파일 644, 폴더 755로 일괄 정리할 때도 -exec를 사용합니다. 실행 전에 값이 다른 파일부터 찾자 run.sh와 my notes.txt가 나왔습니다.

find /root/work -type f ! -perm 644
/root/work/run.sh
/root/work/my notes.txt

파일과 폴더는 권한이 달라 -type f와 -type d로 나눠 실행합니다. chmod도 경로를 여러 개 받는 명령이라 끝을 +로 적었습니다.

find /root/work -type f -exec chmod 644 {} +
find /root/work -type d -exec chmod 755 {} +

같은 조건으로 다시 찾자 아무것도 나오지 않았고, 미리 700으로 바꿔 둔 backup 폴더도 755가 되었습니다.

대신 run.sh도 644로 바뀌어 실행하자 [Permission denied]가 나왔습니다. 실행 파일이 섞인 폴더에서는 이 파일들의 실행 권한을 chmod +x로 다시 부여합니다.

하위 폴더 안의 파일만 바꿀 때는 -mindepth 2를 붙입니다. 660으로 실행하자 docs와 logs 안의 다섯 파일만 바뀌었고, 확인 뒤 644로 되돌렸습니다.

find /root/work -mindepth 2 -type f -exec chmod 660 {} +
find /root/work -type f -perm 660
/root/work/docs/readme.txt
/root/work/docs/guide.txt
/root/work/docs/old.tmp
/root/work/logs/app.log
/root/work/logs/cache.tmp

find와 grep을 이으면 이름이 아닌 파일 내용으로 찾습니다. 웹쉘을 점검하는 상황을 만들기 위해 별도 폴더 /root/site에 PHP 파일 네 개를 만들고, upload 폴더의 html-cache.php와 photo.php에 [base64_decode] 문자열을 넣어 두었습니다.

find /root/site -type f
/root/site/lib/func.php
/root/site/upload/html-cache.php
/root/site/upload/photo.php
/root/site/index.php

웹쉘 이름을 알고 있으면 -name으로 찾습니다. 업로드 폴더까지만 내려가도록 -maxdepth 2를 붙이자 html-cache.php 하나가 나왔습니다.

find /root/site -maxdepth 2 -type f -name 'html*.php'
/root/site/upload/html-cache.php

이름을 평범하게 바꾼 photo.php는 여기에 나오지 않았습니다. -exec로 grep -l을 실행하면 문자열이 든 파일의 경로만 출력하며, 두 파일이 모두 나왔습니다.

find /root/site -name '*.php' -exec grep -l 'base64_decode' {} +
/root/site/upload/html-cache.php
/root/site/upload/photo.php

[base64_decode]는 워드프레스 코어 파일에도 들어 있는 함수이므로, 나온 파일은 내용을 열어 확인한 뒤에 지웁니다.

-print0은 경로 사이에 줄바꿈 대신 널 문자를 넣습니다. 널 문자는 화면에 보이지 않아 경로가 한 줄로 이어 붙어 나왔습니다.

find /root/work -name '*.txt' -print0
/root/work/docs/readme.txt/root/work/docs/guide.txt/root/work/report.txt/root/work/my notes.txt/root/work/empty.txt

my notes.txt처럼 공백이 든 이름도 끊기지 않게 다른 명령에 넘길 때, -print0 출력은 xargs -0과 짝으로 사용합니다(man 페이지 기준).

6️⃣ find 명령어 파일 삭제와 옵션

  • ↪️ -delete와 -exec rm

지우기 전에는 같은 조건을 삭제 없이 먼저 실행해, 지울 파일 목록을 눈으로 확인합니다.

find /root/work -name '*.tmp'
/root/work/docs/old.tmp
/root/work/logs/cache.tmp

-exec rm {} \;는 찾은 파일마다 rm을 실행합니다. logs 폴더에서만 실행하자 cache.tmp가 지워지고 app.log만 남았습니다.

find /root/work/logs -name '*.tmp' -exec rm {} \;
ls /root/work/logs
app.log

-delete는 rm을 따로 실행하지 않고 find가 직접 지웁니다. 실행해도 아무것도 출력하지 않았고, 같은 조건으로 다시 찾자 남은 .tmp 파일이 없었습니다.

find /root/work -name '*.tmp' -delete
find /root/work -name '*.tmp'

-delete는 반드시 조건 뒤에 적습니다. find는 명령 줄을 앞에서부터 하나의 식으로 계산하므로, -delete를 맨 앞에 두면 조건을 보기 전에 시작 경로 아래를 모두 지우려고 합니다(man 페이지 기준).

🔲 find 명령어 옵션

📌 주요 옵션: 이 글에서 실행한 결과

옵션하는 일이 글에서 본 결과
-name이름이 패턴과 맞는 것을 찾음(대소문자 구분)'*.txt'로 다섯 파일, 'readme*'로 docs/readme.txt 하나만 나옴
-iname대소문자를 가리지 않고 이름을 비교'readme*'로 docs/readme.txt와 README.md가 함께 나옴
-type f, -type d일반 파일(f)이나 폴더(d)만 남김-type d로 시작 경로를 포함한 폴더 넷, -type f로 파일 열 개가 나옴
-maxdepth시작 경로에서 N단계 아래까지만 내려감-maxdepth 1로 /root/work 바로 아래 파일 다섯 개만 남음
-mindepth시작 경로에서 N단계보다 위쪽은 건너뜀-mindepth 2로 하위 폴더 안의 파일 다섯 개만 나옴
-size크기로 찾음(+는 큼, -는 작음, 단위 c, k, M, G)-size +1k로 세 파일, -size -1k로 empty.txt 하나만 나옴
-mtime내용을 수정한 뒤 지난 시간을 24시간 단위로 비교-mtime -1로 다섯 파일, -mtime +7로 .tmp 파일 두 개가 나옴
-mmin수정한 뒤 지난 시간을 분 단위로 비교-mmin -60으로 -mtime -1과 같은 다섯 파일이 나옴
-ctime권한과 이름 같은 파일 정보가 바뀐 시각까지 24시간 단위로 비교-ctime -1로 시험 파일 열 개가 모두 나옴
-newer기준 파일보다 나중에 수정한 것을 찾음3일 전으로 맞춘 README.md를 기준으로 다섯 파일이 나옴
-empty크기 0인 파일과 빈 폴더를 찾음빈 폴더 backup과 empty.txt가 나옴
-perm권한으로 찾음(숫자만 적으면 정확히 그 값, 앞에 -를 붙이면 적은 권한이 모두 든 것, /를 붙이면 하나라도 든 것)-perm 644로 여덟 파일, -perm -u+x로 run.sh 하나, SUID를 준 뒤 -perm /6000으로 run.sh가 나옴
-user소유자 이름으로 거름-name '*.log'와 함께 적어 app.log 하나가 나옴, 없는 계정은 오류로 끝남
-nouser소유자 UID에 맞는 계정이 없는 것을 찾음UID를 1500으로 바꾼 guide.txt 하나가 나옴
-nogroup소유 그룹 GID에 맞는 그룹이 없는 것을 찾음GID를 1500으로 바꾼 guide.txt 하나가 나옴
-o둘 중 하나만 맞아도 남김(다른 조건과 함께 쓸 때는 괄호로 묶음).log와 .tmp를 묶어 세 파일이 나옴
!바로 뒤의 조건을 뒤집음.txt가 아닌 파일 다섯 개가 나옴
-exec찾은 파일마다 뒤에 적은 명령을 실행({} 자리에 경로)끝을 +로 적자 echo 한 번에 다섯 경로가 한 줄로 나옴
-print0경로 사이에 줄바꿈 대신 널 문자를 넣음널 문자가 보이지 않아 경로가 한 줄로 이어 붙음
-delete찾은 파일을 find가 직접 지움(조건 뒤에 적음)아무것도 출력하지 않았고, 다시 찾자 .tmp 파일이 없음

📎 그 밖의 옵션: 공식 매뉴얼 기준

옵션하는 일
-L심볼릭 링크를 따라가 링크 대상 파일의 정보를 사용
-path이름 대신 경로 전체를 셸 패턴과 비교
-regex경로 전체를 정규식과 비교
-iregex-regex처럼 비교하되 대소문자를 가리지 않음
-atime마지막으로 접근한 뒤 지난 시간을 24시간 단위로 비교
-cnewer상태가 바뀐 시각이 기준 파일의 수정 시각보다 나중인 것을 찾음
-group소유 그룹 이름으로 거름
-xdev다른 파일 시스템의 폴더로 내려가지 않음
-daystart시간 조건을 24시간 전 대신 오늘 0시부터 계산
-prune폴더면 그 아래로 내려가지 않음
-quit바로 끝냄(-print -quit로 첫 결과만 출력)
-printf출력 꼴을 직접 정해 출력
-ls찾은 파일을 ls -dils 꼴로 출력
-fprint찾은 경로를 화면 대신 지정한 파일에 저장
-ok-exec처럼 실행하되 실행할지 먼저 물음
-execdir-exec처럼 실행하되 찾은 파일이 있는 폴더에서 명령을 실행

🔲 find 명령어 시뮬레이터

아래 시뮬레이터는 같은 시험 폴더를 담은 가상 서버로, -name, -type, -size, -mtime, -perm 같은 조건과 -exec, -delete를 직접 실행해 볼 수 있습니다.

find 명령어 시뮬레이터findutils 4.8
[root@server work]#
브라우저 안에서만 동작하는 가상 서버이며, 왼쪽 칸에 /root/work 파일마다 크기와 수정 시각, 권한이 나옵니다. -delete와 -exec rm으로 지운 파일은 [처음부터]로 되돌릴 수 있습니다.

7️⃣ find 명령어 오류

  • ↪️ paths must precede expression과 Permission denied

패턴을 따옴표 없이 적으면 셸이 와일드카드 규칙에 따라 지금 폴더의 파일 이름으로 먼저 펼칩니다. docs 폴더로 이동해 *.txt를 따옴표 없이 적자, 셸이 guide.txt와 readme.txt 두 이름으로 바꿔 넘겨 아래 오류가 나왔습니다.

cd /root/work/docs
find /root/work -name *.txt
find: paths must precede expression: `readme.txt'
find: possible unquoted pattern after predicate `-name'?

종료 코드는 1이었습니다.

-exec 끝에 \;나 +를 빠뜨리자 [missing argument to `-exec’]가 나왔습니다.

find /root/work -name '*.log' -exec ls -l {}
find: missing argument to `-exec'

없는 경로를 시작 경로로 적으면 [No such file or directory]가 나오고 종료 코드 1로 끝났습니다.

find /nonexistent-dir -name x
find: '/nonexistent-dir': No such file or directory

-user에 없는 계정 이름을 적거나, -type에 f와 d 같은 정해진 글자가 아닌 값을 적어도 찾기를 시작하지 않고 바로 오류로 끝났습니다.

find /root/work -user nosuchuser
find: 'nosuchuser' is not the name of a known user
find /root/work -type x
find: Unknown argument to -type: x

Debian 12 서버의 일반 계정으로 시험 폴더 안 lock 폴더의 권한을 000으로 바꾼 뒤 시험 폴더를 찾았습니다. lock 안을 읽지 못해 [Permission denied]가 나왔고 종료 코드는 1이었습니다.

find ~/findtest
/home/user/findtest
/home/user/findtest/report.txt
/home/user/findtest/lock
find: '/home/user/findtest/lock': Permission denied
/home/user/findtest/docs
/home/user/findtest/docs/readme.txt

오류 줄만 숨기려면 2>/dev/null을 붙입니다. 오류 문구는 사라졌지만 종료 코드는 그대로 1이었습니다.

find ~/findtest -name '*.txt' 2>/dev/null
/home/user/findtest/report.txt
/home/user/findtest/docs/readme.txt

🔢 FAQ & 추천 콘텐츠

find는 실행할 때마다 시작 경로 아래를 직접 내려가며 찾습니다. locate는 updatedb로 미리 만들어 둔 데이터베이스에서 이름을 찾으므로, 데이터베이스를 마지막으로 갱신한 뒤에 만든 파일은 나오지 않습니다(man 페이지 기준).

-mtime은 내용을 수정한 시각을, -ctime은 권한과 이름 같은 파일 정보가 바뀐 시각까지 봅니다. touch -d로 수정 시각을 3일 전으로 맞춘 README.md도 시각을 바꾼 일 자체가 정보 변경으로 남아, -ctime -1에는 시험 파일 열 개가 모두 나왔습니다.

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

인간임을 증명하세요: 8   +   6   =