리눅스 파일과 디렉터리 찾는 방법
리눅스에서 파일과 디렉터리를 찾으려면 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) {
$
'컴퓨터 > 우분투·리눅스' 카테고리의 다른 글
우분투·리눅스 파일 디렉토리 처리 명령어 (2) | 2021.05.01 |
---|---|
우분투에서 윈도우 원격데스크톱 연결 xfreerdp (0) | 2020.09.14 |
우분투 리눅스에서 .deb 파일 설치 제거 방법 (6) | 2020.07.20 |