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

리눅스 find 명령어는 시작 폴더 아래를 차례로 내려가며 이름과 종류, 크기, 수정 시각, 권한 같은 조건에 맞는 파일과 폴더를 찾는 명령어입니다. AlmaLinux 9 서버의 시험 폴더에 파일 열 개를 만들어 조건을 하나씩 바꿔 실행한 결과, 찾은 파일을 -exec로 다른 명령에 넘기고, 지울 때는 -delete 전에 같은 조건으로 목록부터 확인하게 되었습니다.
결과 상자의 시험 폴더 경로와 파일 시각은 예시 값으로 바꿨습니다. Debian 12 서버의 출력은 홈 폴더 경로만 예시 값이고 나머지는 그대로 옮겼습니다.
1️⃣ 리눅스 find 명령어 사용법
기본 꼴은 [find 시작경로 조건]입니다. 시작 경로를 적지 않으면 지금 폴더(.)에서 찾고, 조건을 적지 않으면 시작 경로 아래의 파일과 폴더를 모두 출력합니다.
시험은 아래처럼 폴더 셋과 파일 열 개를 만든 /root/work에서 진행했습니다.
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.txtfind는 결과를 이름순으로 정렬하지 않으며, 이번 실행에서는 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.txtfind /root/work -iname 'readme*'/root/work/docs/readme.txt
/root/work/README.mdfind는 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.tmpman 페이지는 -maxdepth 같은 전역 옵션을 시작 경로 바로 뒤에 적도록 안내합니다. -type f 뒤에 -maxdepth 1을 적어도 결과는 앞과 같은 다섯 파일이었으며, 터미널에서 실행하면 전역 옵션을 앞에 적으라는 경고 한 줄이 함께 나옵니다(man 페이지 기준).
폴더나 파일이 몇 개인지만 확인할 때는 출력을 wc -l로 넘깁니다. -type d 출력을 세자 시작 경로를 포함해 4가 나왔습니다.
find /root/work -type d | wc -l4-maxdepth 1을 붙여도 4가 나왔습니다. 하위 폴더 셋이 모두 시작 경로 바로 아래에 있기 때문입니다.
find /root/work -maxdepth 1 -type d | wc -l4-mindepth 2로 하위 폴더 안의 파일만 세자 5가 나왔습니다.
find /root/work -mindepth 2 -type f | wc -l53️⃣ find 명령어 크기·시간 조건
숫자 앞의 +는 그 값보다 큼, -는 그 값보다 작음을 의미하며, 부호가 없으면 정확히 그 값입니다. -size의 단위는 아래 표와 같습니다(man 페이지 기준).
| 단위 | 크기 | 예 |
|---|---|---|
| c | 1바이트 | -size +500c |
| k | 1,024바이트 | -size +1k |
| M | 1,048,576바이트 | -size +1M |
| G | 1,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.txt1k보다 큰 파일은 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.txt4️⃣ 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.shfind /root/work -type f -perm /6000/root/work/run.sh오래된 자료에는 같은 자리에 -perm +6000이 적혀 있습니다. 그대로 실행하자 [invalid mode] 오류로 끝났습니다.
find /root/work -type f -perm +6000find: 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.txtfind /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.sh5️⃣ find -exec 활용
-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.txtfind /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.txtls처럼 경로를 여러 개 받는 명령은 +로 묶어 실행 횟수를 줄입니다. 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.tmpfind와 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.txtmy notes.txt처럼 공백이 든 이름도 끊기지 않게 다른 명령에 넘길 때, -print0 출력은 xargs -0과 짝으로 사용합니다(man 페이지 기준).
6️⃣ find 명령어 파일 삭제와 옵션
지우기 전에는 같은 조건을 삭제 없이 먼저 실행해, 지울 파일 목록을 눈으로 확인합니다.
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/logsapp.log-delete는 rm을 따로 실행하지 않고 find가 직접 지웁니다. 실행해도 아무것도 출력하지 않았고, 같은 조건으로 다시 찾자 남은 .tmp 파일이 없었습니다.
find /root/work -name '*.tmp' -deletefind /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를 직접 실행해 볼 수 있습니다.
7️⃣ find 명령어 오류
패턴을 따옴표 없이 적으면 셸이 와일드카드 규칙에 따라 지금 폴더의 파일 이름으로 먼저 펼칩니다. docs 폴더로 이동해 *.txt를 따옴표 없이 적자, 셸이 guide.txt와 readme.txt 두 이름으로 바꿔 넘겨 아래 오류가 나왔습니다.
cd /root/work/docsfind /root/work -name *.txtfind: 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 xfind: '/nonexistent-dir': No such file or directory-user에 없는 계정 이름을 적거나, -type에 f와 d 같은 정해진 글자가 아닌 값을 적어도 찾기를 시작하지 않고 바로 오류로 끝났습니다.
find /root/work -user nosuchuserfind: 'nosuchuser' is not the name of a known userfind /root/work -type xfind: Unknown argument to -type: xDebian 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 & 추천 콘텐츠
ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.