파일

포스트: 80
Tags

Posts

80 posts

locate - 리눅스에서 고속으로 파일 찾기

반달가면|2018년 12월 3일

파일을 검색할 때 개인적으로 가장 요긴하게 사용하는 명령어가 find인데, 파일 수가 엄청나게 많은 상황에서 특정 파일의 위치를 확인하려면 시간이 꽤 걸릴 수 있다. 이럴 경우 locate를 사용하면 훨씬 빠르게 결과를 얻을 수 있다. 파일 시스템을 직접 검색하는 find와 달리, locate는 파일 정보가 저장되어 있는 데이터베이스(DB)를 검색해서 결과를 출력하기 때문에 속도가 훨씬 빠르다. 검색 조건과 관련된 옵션에 있어서는 find가 훨씬 유연하고 다양하므로 필요에 따라 두가지 명령을 상호보완적으로 사용하면 되겠다. (find 활용은 이전 게시물들을 참고하자. 여기로) 가장 간단한 예로, 파일시스템 어딘가에 my_file.txt 파일이 어디에 있는지 보려면 아래와 같이 입력하면 된다.

리눅스에서 파일이 매우 많은 디렉토리에 대한 ls 명령 실행속도 향상 (-f 옵션)

반달가면|2018년 11월 29일

간단한 내용이지만, 간혹 요긴할 때가 있어 정리해 두기로. 리눅스에서 디렉토리 하위에 상당히 많은 파일이 있을 경우, ls 명령을 입력하면 시간이 상당히 오래 걸릴 수 있다. 특히 속도가 느린 HDD에서는 더욱 두드러질 수 있다. 출력이 느린 이유중 하나는 ls에서 조회한 내용을 출력할 때 정렬(sorting)을 하기 때문이다. 항목이 많지 않을 때는 문제가 없지만 항목이 꽤 많을 경우엔 정렬에 소요되는 시간도 무시할 수 없게 된다. 이런 상황일 경우 -f 옵션을 추가해서 정렬하지 않고 바로 결과를 출력하도록 할 수 있다. # -f 옵션: 정렬 비활성화(do not sort) ls -f 예를 들어 특정한 문자열이 포함된 파일이 있는지 유무를 확인하려 할 경우에 굳이 정렬로 시간을 낭비

리눅스 bash 스크립트에서 텍스트 파일을 읽어서 한 줄씩 배열(array) 원소로 할당하기 - 2 (readarray)

반달가면|2018년 10월 25일

bash 스크립트에서 텍스트 파일의 각 행을 배열(array)에 할당하는 방법을 예전에 기록해 두었었는데(여기에), 훨씬 더 간단하고 편리한 방법을 발견했다. 예전에 적었던 방법은 한줄씩 구분해서 할당하기 위해 내부 필드 구분자(internal field separator) 설정(변수 IFS)을 바꿔야 해서 귀찮았는데, readarray라는 명령을 이용하면 이런 과정이 필요 없다. # test.txt 파일을 읽어서 각 행을 배열 arr에 할당 readarray arr < test.txt # 첫번째 행 출력 echo "${arr[0]}" 리눅스 bash 스크립트의 배열에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로

우분투 계열 리눅스에서 시냅틱 패키지 관리자의 패키지 다운로드 위치

반달가면|2018년 10월 9일

간혹 필요할 때가 있어 정리해 두기로. 리눅스 민트 등 우분투 계열 리눅스에서 시냅틱 패키지 관리자(Synaptic Package Manager)를 사용할 때, 선택한 패키지를 설치하지 않고 다운로드만 할 수도 있다. 설치 직전에 "download package files only" 항목을 체크하면 된다. 문제는 대체 이 패키지(.deb) 파일이 어디에 들어 있느냐는 것인데, /var/cache/apt/archives/ 디렉토리에 다운로드된다. 물론 "download package files only" 항목을 체크하지 않아도 이 위치로 다운로드된 후에 설치가 진행된다. 다운로드해 둔 패키지를 나중에 수동으로 설치하려면 아래와 같이 작업한다. # 패키지 다운로드 디렉토리 이동 cd /v