본문으로 바로가기
homeimage
  1. Home
  2. 컴퓨터/우분투·리눅스
  3. 리눅스 파일 디렉터리 찾는 방법

리눅스 파일 디렉터리 찾는 방법

· 댓글개 · 바다야크

리눅스 파일과 디렉터리 찾는 방법

리눅스에서 파일과 디렉터리를 찾으려면 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) {
$

명령 행에서 /dev/null을 빼고 실행하면 grep로 파일 내에서 문장을 검색하는 결과가 출력됩니다.

$ 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) {
$
SNS 공유하기
💬 댓글 개
최근글
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.