리눅스 파일 디렉터리 찾는 방법
리눅스 파일과 디렉터리 찾는 방법
리눅스에서 파일과 디렉터리를 찾으려면 find 명령을 사용합니다. -exec 옵션으로 grep를 이용하면 디렉터리 내에 있는 모든 파일 중 특정 문장이 있는 파일만 찾을 수도 있습니다. find 명령의 기본 사용 방법은 아래와 같습니다.
find [찾는 위치] -name [파일이름]
예를 들어 $ find . -name main.c 를 실행하면 현재 위치에서 서브 디렉터리까지 main.c를 찾아서 디렉터리 위치를 표시해 줍니다.
$ find . -name main.c ./mingw_rs232/main.c ./mingw_tcp_server/main.c ./can_to_udp/main.c ./can_to_uart/main.c ./get_curmsec/main.c ./mingw_tstrlist/main.c ./get_systick_count/main.c ./mingw_udp_client/main.c ./fanet_can_loop/main.c ./sample_gxlib/01_gx_open/main.c ./sample_gxlib/06_save_png/main.c ./sample_gxlib/02_gx_get_screen_dc/main.c ./sample_gxlib/50_multi_frame/main.c $
리눅스에서 특정 문자열이 있는 파일 모두 찾기
만일 서브 디렉터리 안에 있는 모든 C 소스 파일 중에 main() 함수 위치를 아래와 같이 찾을 수 있습니다.
find . -name *.c -exec grep "main(" /dev/null {} \;
위 명령을 분석하면 아래와 같습니다.
- . find 명령을 현재 디렉터리를 시작으로 서브 디렉터리까지 모두 검색합니다.
- -name *.c 파일 이름 중 *.c를 찾으며
- -exec grep 찾은 파일을 대상으로 grep 명령으로 파일 내용을 검색합니다.
- "main(" 검색할 단어입니다.
- /dev/null grep가 검색하는 과정을 제거합니다.
- {} 찾은 파일 이름을 대치합니다.
- \; grep는 grep 다음 문자부터 ; 문자 사이까지를 실행합니다. ; 문자는 특수문자여서 앞에 \를 붙였습니다.
$ find . -name *.c -exec grep "main(" /dev/null {} \; ./fanet_can_sample/can_receiver/main_can_receiver.c:int main(int argc, char **argv) { ./fanet_can_sample/can_sender/main_can_sender.c:int main(int argc, char **argv) { ./sample_tmmap/sample.c:int main( int argc, char **argv ) ./can_to_udp/main.c:int main(int argc, char **argv) { ./sample_ix_key/sample.c:int main( int argc, char **argv ) ./gxlib_gallery/main.c:@brief main() ./app_logger_test/main.c:int main(int argc, char **argv) ./sample_fanet_udp_echo/udp_client.c:int main(int argc, char **argv) { ./sample_fanet_udp_echo/udp_server.c:int main(int argc, char **argv) { ./sample_rspackage/sample.c:int main( void) ./fanet_can_loop/main.c:int main(int argc, char **argv) { ./sample_tcp_server/sample.c:int main( int argc, char **argv ) ./sample_gxlib/sample_정리/main.c:int main( void) ./sample_gxlib/03_get_set_pixel/main.c:int main(void) ./sample_gxlib/11_copy_screen/main.c:int main( int argc, char *argv[]) ./sample_gxlib/sample_gxlib/sample.c:int main( void) ./can_pslink_emulator/main_can_sender.c:int main(int argc, char **argv) { $
▲ 실행 결과입니다.
$ find . -name *.c -exec grep "main(" {} \; int main(int argc, char **argv) { int main(int argc, char **argv) { int main( int argc, char **argv ) int main( int argc, char **argv ) int main( int argc, char **argv ) int main(int argc, char **argv) { int main( int argc, char **argv ) @brief main() int main( int argc , char **argv ) int main( void) int main( int argc, char **argv ) int main(int argc, char **argv) int main(int argc, char **argv) { int main(int argc, char **argv) { $
▲ 명령 행에서 /dev/null을 빼고 실행하면 grep로 파일 내에서 문장을 검색하는 결과가 출력됩니다.
-
쑤통
- 2021.02.16 12:27 신고
유용한 정보 잘보고 가요 오늘도 좋은하루 보내세요~^^-
바다야크 바다야크
- 2021.02.18 21:49 신고
말씀 고맙습니다. 새해 복 많이 받으세요. ^^
-
- 블린디
- 2021.03.25 12:21
이렇게 오랫동안 블로그를 운영할 수 있다니 신기합니다. 저는 이제 시작해보려고 해요.감사합니다.-
바다야크 바다야크
- 2021.03.25 12:54 신고
생각해 보니 정말 오래되었네요. 블로그를 만드시면 저에게 꼭 알려 주세요. ^^