숏컷 코드
bash
find . -name "*.log"
find /var/log -type f -mtime -1
find . -type f -size +100M
grep -n "ERROR" app.log
grep -R "DATABASE_URL" .
grep -R --exclude-dir=node_modules "TODO" .| 목적 | 명령 |
|---|---|
| 이름으로 파일 찾기 | find . -name "*.conf" |
| 타입으로 좁히기 | find . -type f |
| 수정 시간으로 좁히기 | find . -mtime -1 |
| 내용에서 문자열 찾기 | grep -n "text" file |
| 디렉터리 재귀 검색 | grep -R "text" . |
| 줄 번호 표시 | grep -n |
검색 기준
find는 파일 이름, 타입, 크기, 수정 시간 같은 파일 메타데이터를 기준으로 검색합니다. grep은 파일 내용의 텍스트를 검색합니다. "어떤 파일이 있는가"가 질문이면 find, "어느 파일 안에 문자열이 있는가"가 질문이면 grep이 먼저입니다.
bash
find . -name "*.service"
grep -R "ExecStart" /etc/systemd/system큰 디렉터리에서 재귀 검색을 할 때는 제외 대상을 명시하는 것이 중요합니다. node_modules, .git, dist, build 같은 디렉터리를 그대로 검색하면 느리고 불필요한 결과가 많아집니다.
bash
grep -R --exclude-dir=.git --exclude-dir=node_modules "API_KEY" .find 결과를 실행 명령으로 넘길 때는 공백을 고려한다
파일명에 공백이나 특수 문자가 있을 수 있으므로, 대량 삭제나 이동에는 결과를 눈으로 확인한 뒤 실행해야 합니다. find ... -print로 목록을 먼저 보고, 정말 의도한 대상만 잡히는지 확인합니다.
bash
find . -name "*.tmp" -print
find . -name "*.tmp" -delete선택 기준
| 상황 | 선택 |
|---|---|
| 파일 이름 패턴 검색 | find -name |
| 파일 내용 검색 | grep |
| 특정 디렉터리 제외 | --exclude-dir |
| 최근 변경 파일 찾기 | find -mtime, find -mmin |
| 큰 파일 찾기 | find -size |
| 검색 후 삭제 | 목록 확인 후 -delete |
주의할 점
find ... -delete는 되돌리기 어렵습니다. 삭제 조건은 -print로 먼저 확인하고,
검색 루트가 /나 홈 디렉터리 전체처럼 넓지 않은지 확인하십시오.
bash
find ./logs -name "*.tmp" -print
find ./logs -name "*.tmp" -delete참고 링크
2 sources