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

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

· 댓글 4 · 바다야크

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

리눅스에서 파일과 디렉터리를 찾으려면 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로 파일 내에서 문장을 검색하는 결과가 출력됩니다.

💬 댓글 4
logo

유용한 정보 잘보고 가요 오늘도 좋은하루 보내세요~^^

logo

말씀 고맙습니다. 새해 복 많이 받으세요. ^^

logo
블린디

이렇게 오랫동안 블로그를 운영할 수 있다니 신기합니다. 저는 이제 시작해보려고 해요.감사합니다.

logo

생각해 보니 정말 오래되었네요. 블로그를 만드시면 저에게 꼭 알려 주세요. ^^

이름을 저장합니다.

최근글 thumbnail 로지텍 마우스 추천 무소음 무선 마우스 로지텍 M331 thumbnail 갤럭시 핸드폰 속도 빠르게 설정하는 방법 thumbnail 구글 스프레드 시트 앱스 스크립트 실행 방법 thumbnail 오리코 SSD 케이스 ORICO-M2 NVMe SSD 인클로저 사용후기 thumbnail 윈도우10·11 악성 소프트웨어 제거 도구 thumbnail C언어 날짜 시간 문자열 분리 팁 thumbnail 오닉스 포크3 구글 키보드 설치 방법 (1) thumbnail 전자책 오닉스 포크3 구글 플레이 스토어 설치 방법
좋은 글 읽고 따라했으나 며⋯ 💬ㅇㅇ 해상도가 높은 모니터에서 말⋯ 💬바다야크 당연히 안되지요. 더 이상 공⋯ 💬ㅇㅇ 안녕하세요 좋은 프로그램 만⋯ 💬프로듀사1600 저의 글이 도움을 드렸다니⋯ 💬바다야크