본문 바로가기
Linux & Unix

리눅스 find 명령어를 활용하여 작업 기록 및 검색

by D.Flicker 2013. 2. 22.

리눅스를 이용하면서 저는 모든 작업 폴더에 작업 id를 부여 합니다. $ touch 222test.id

예전에는 작업 내용 + 해당 경로를 기록해 두었는데, 데이터가 많아 지면 트리 구조가 복잡해 지고, 나중에 쉽게 디렉토리 이름만으로도 찾아 갈 수 있도록 폴더들을 정리 하게 되면 그 때마다 해당 경로를 다시 변경해 주어야 하는 문제가 있더군요. 하지만 폴어데 작업 아이디 (.id)라는 파일을 만들어 두면, 폴더 이름을 변경하고 경로를 이동 시켜도 나중에 해당 작업 아이디(파일 이름)를 검색하면 되기 때문에 정말 편리합니다.

일반적으로 find 명령어를 통해 파일 검색을 하면 해당 파일이 있는 경로 및 파일 이름까지 한줄로 보여줍니다.

find ~/ -name 222test.id -type f

~ : 자신의 홈디렉토리부터 하위 디렉토리 까지 검색
-name : 검색할 파일 이름 지정 (여기서는 222test.id)
-type : type 지정 (f: 파일, d: 디렉토리)

검색 결과

/home/user/driver/222test.id

바로 해당 경로로 이동하고 싶은데, 더블 클릭해서 위의 결과를 복사하면 222test.id 까지 포함되기 때문에 번거롭습니다.

이럴때에는 |xargs dirname을 이용해서 디렉토리 이름만 나타내도록 합니다.

find ~/ -name 222test.id -type f | xargs dirname

파이프 앞의 출력을 입력으로 받아서 xargs 뒤의 명령을 입력으로 받는다는 명령어 입니다.

반대로 파일명만 가져오는 방법은 basename 입니다.

스크립트 만들어서 검색을 편리하게

echo "Searching......."
echo ""
find ~/ -name $1 -type f | xargs dirname

1. 위의 세 줄을 sea 라는 파일에 기록

2. 어느 경로에서나 실행될 수 있도록 sea 파일이 있는 경로를 PATH에 추가.
sea라는 파일이 ~/script에 있다면
$ vi ~/.bashrc
export PATH=~/script/:$PATH
:wq 로 저장하고 빠져 나오고
$ source ~/.bashrc

3. 검색 방법
sea 222test.id

결과
/home/user/driver/222test.id