setting, git, shell etc

recursive file name, content search, pushd, popd

qkqhxla1 2020. 6. 15. 10:08

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가 스택에서 빠지면서 나도 이 경로로 이동하게 된다.




꿀팁인데 여태까지 몰라서 적어놓음.

'setting, git, shell etc' 카테고리의 다른 글

docker Error saving credentials: error storing credentials  (0) 2020.12.09
jq, awk  (0) 2020.07.06
ssh to server without password  (0) 2020.04.29
intellij, pycharm git 단축키 설정.  (0) 2019.12.17
pycharm git line history  (0) 2019.11.20