recursive file name, content search, pushd, popd
1. '파일명'을 찾을때 find명령어를 많이 쓴다. find를 사용하면 경로를 입력한 파일 내에서 폴더가 있으면 재귀적으로 들어가면서 파일명들을 조건에 맞게 검색이 가능하다.
ex) 모든 경로에서 na가 들어간 모든 파일 이름을 찾자 -> find / -name *na* 2>/dev/null
그러면 파일에 쓰여있는 내용들을 현재 파일 내에서 재귀적으로 들어가면서 검색을 하려면 어떻게 해야 할까??
grep을 사용하면 현 경로에서 recursive하게 파일 내용들을 검색해볼수 있다.
맥 기준.
https://apple.stackexchange.com/questions/275373/how-to-make-grep-work-like-in-ubuntu/275379 를 참조한다.
grep -R '검색할 내용' 검색할_위치 처럼 입력한다.
위 사진에서 보면
test폴더 안에 t1.txt가 있고 ra가 들어가있다.
test/test2 의 경로에는 t2.txt가 있고 내부에는 rara가 쓰여있다.
path가 test인 상태에서 grep -R 'ra' .으로 검색해보면 재귀적으로 들어가면서 파일 내용을 찾는걸 알 수 있다.
참고로 우분투는 grep -rn '검색할 내용' 으로 찾으면 된다.
2. 대부분 시중에 나와있는책으로 리눅스를 배운 우리(?)들은 파일들을 이동할때 당연히 cd를 쓴다. 근데 이런 경우가 있다.
현재 /a/b/c/d/e/f/ 경로인데 /xx/yy/zz/ww경로로 cd로 이동을 했다.
그러다가 작업을 다시 해야해서 /a/b/c/d/e/f/로 돌아가려고 한다면? 이전 경로가 너무 복잡해서 기억을 잘 못하는 경우가 많다. 아 이전에 작업하던 폴더가 어디였지... history쳐서 뒤져봐야하나 어쩌구 저쩌구 하는데 pushd와 popd를 쓰면 이 문제를 해결할 수 있다. pushd와 popd는 우리팀의 vi,쉘 마스터이신분들중 한분이 뒤에서 작업하는걸 몰래 보다가 발견했다.
(vi마스터하신 분들 보면 코딩도 인텔리제이안쓰고 vi에 플러그인깔아서 알록달록하게 만들어서 하던데 신기하다.)
https://unix.stackexchange.com/questions/77077/how-do-i-use-pushd-and-popd-commands 를 참조하자.
보면 처음 시작시 경로는 /Users/qkqhxla1/Downloads/work/test이다. 그후 pushd로 Downloads/work/test/test2 경로로 이동한다. pushd명령어는 뒤의 경로로 이동하면서 스택에 이동하는 경로 히스토리를 쌓아놓는다.
pushd test2후에 ~/Downloads/work/test/test2 ~/Downloads/work/test가 출력되는데 스택에 이 두경로가 들어가있다는 뜻이고, 오른쪽으로 갈수록 스택에 첫번째로 들어간 경로이다. 최근에 들어온 경로는 왼쪽으로 삽입된다.
popd를 하면 가장 최근에 들어왔었던 ~/Downloads/work/test/test2가 스택에서 빠지면서 나도 이 경로로 이동하게 된다.
꿀팁인데 여태까지 몰라서 적어놓음.