# 파일 이름이 숫자.txt 인 것들 find . -regex ".*/[0-9]+.txt"
-mtime, -atime, -ctime
등을 사용하면 접근/생성/변경 등의 날짜를 기준으로 파일을 찾을 수 있다.# 30일 보다 이전에 수정된 파일들 find . -mtime +30 # 딱 30일 전에 수정된 파일 find . -mtime 30 # 시간 비교시 해당 일의 시작 시간(00:00) 부터 find . -mtime 30 -daystart # 30일 전 이후(오늘 부터 30일 전까지 사이)에 수정된 파일 fine . -mtime -30
-maxdepth 1
: 최대 디렉토리 한 단계만-mindepth 1
: 명령행 지정된 경로(한 단계)를 제외하고 찾기-type d
: 디렉토리-type f
: 일반 파일-type l
: 심볼릭 링크-type s
: socketshell - How to get file only file name with linux `find`? - Stack Overflow
find ./dir1 -type f -exec basename {} \; find /dir1 -type f -printf "%f\n"
find
명령이 파일 이름을 읽는 순간과 해당 파일의 상태 정보를 읽는 순간의 그 사이에 파일이 삭제될 경우 오류 메시지가 출력 된다. 보통은 No such file or directory
-ignore_readdir_race
옵션을 주면 파일이 사라진 상황에 대한 에러 메시지를 안내고 그냥 무시한다.find . -type f -printf "%f\n" | sort | uniq -c | grep -v ' 1 '
find */ | cut -d/ -f1 | uniq -c
로그 파일이 한 날짜에 굉장히 많을 때(예: Jenkins build log) 특정 날짜의 로그 파일만 찾아서 거기서 특정 문자열 검색
# 날짜 기준이 생성일이라고 할 때, 첫 날짜는 검색하고자 하는 날짜, 두번째는 검색하고자 하는 다음날 날짜 find . -name *.log -newerct yyyy-MM-dd ! -newerct yyyy-MM-dd -exec grep -Hni '검색어' {} \;