리눅스#3

최동민·2022년 7월 3일
0

Linux

목록 보기
3/25

find

: 특정 파일의 위치를 검색하는 명령어

  • find /etc -name .conf
    etc디렉터리에서 찾겠다,
    확장명이
    .conf 로 끝나는 이름을 찾겠다,
    (*.conf : 뒤에는 무조건 conf로 끝나야 하고 앞은 상관 없다는 뜻)
  • find /home -user finduser
    finduser가 소유하고 있는 파일과 디렉터리 다 찾아짐. 숨김파일 포함.
  • ls -l /home/
  • find /home -user finduser 2> /dev/null

    리다이렉션에는 1,2,0을 입력할 수 있는데,
    0 표준입력 1 표준출력 2 표준에러
    0과 1과 2를 적으면 표준에러만 골라서 /dev/null에 보내어 출력하겠다,
    /dev/null은 블랙홀. 쓰레기통임. 들어가면 자동으로 없어진다. null로 처리가됨. 표준에러를 버리겠다는 뜻.
    find /home -user finduser 했을 때 Permission denied(불필요한) 까지 뽑아지던 것들을 빼고 출력이 됨.
  • find /usr/bin -size +10k -size -100k
    사이즈가 10키로바이트 보다 크고 100키로바이트보다 작은 것.
  • find . -atime -1

    오늘 이내에 만들어진 모든 파일을 보여준다
    +1은 하루 지난.
    time: +1 : 하루 지남(일 수)
    min +1 : 1분 지남(분 수)
  • find . -type d
    현재 디렉터리에서 디렉터리만 검색.
  • find . -type f
    현재 디렉터리에서 파일만 검색
  • find의 action을 통해 검색 결과에 해당하는 파일들에게 추가 명령 작업 가능.
  • -exec 와 \; 는 외부 명령어의 시작과 끝을 의미함.
  • find 경로 옵션 -exec {} \;
    {}안에 찾은 파일이나 디렉터리들이 순서대로 들어가진다.
  • find ~ -size -2k -type f

    사이즈가 2키로바이트보다 작은 것들을 찾겠다, 그 중에서 타입이 파일인 것.
  • find ~ -size -2k -type f -exec cat {} \;
  • find ~ -type d -exec ls -l {} \;
  • find ~ -type d -ok ls -l {} \;
    : 중괄호에 하나씩 넣을 때에 그 명령을 실행할 것인지 하나하나 물어본다.

cd /etc/apt
ls
cat sources.list
nano sources.list


문제

  • root로 접속
  • find 명령어를 통해 findDir 디렉터리 내용 중 디렉터리만 검색하세요. (하위 폴더 포함)
    find /home/finduser/findDir -type d
  • findDir 디렉터리에 있는 파일 중 이름에 1이 들어가 있는 파일의 목록을 상세히 출력하세요(디렉터리 제외)
    find /home/finduser -type f -name 별1별 -exec ls -l {} \;
  • findDir 디렉터리에 있는 파일 중 크기가 3kb 이상인 파일의 내용을 출력하세요. (디렉터리 제외)
    find /home/finduser -type f -size +3k -exec cat {} \;

    findDir 디렉터리의 내용 중 숨김파일만 검색하세요.
    find /home/finduser -type f -name ".*"
  • find 명령어를 이용해서 passwd 파일을 명령어로 찾고 findDir에 복사하세요.
    find /etc -name passwd -exec cp {} /home/finduser \;
    passwd가 추가됨.
  • findDir 디렉터리의 내용 중 파일 수정이 일주일이 지난 모든 파일을 tmp디렉터리에 이동하세요.
    find /home/finduser/ -atime +7 -type f -exec mv {} /home/finduser/tmp/ \;
    finduser디렉터리에 수정한지 7일 지난 파일을 tmp디렉터리로 이동한다.

which

: 실행 파일의 위치와 함께 소스, 설정 파일, 메뉴얼 페이지를 검색하여 출력.

whereis

: 실행 파일 및 소스, 메뉴얼 페이지를 검색하여 출력
locate보다 검색 속도가 느리며, 결과를 단순한 정보로 출력.
ex ) whereis cat

wc

: Word Count. 텍스트 파일의 행(line) 수, 단어(word) 수, 문자(byte)수를 출력하는 명령어

  • wc -l testFile
    2행이 나온다.
  • wc -w testFile
    7개의 단어가 나온다.

grep

: Global Regular Expression Print
: 텍스트 파일에서 특정 패턴(pattern, 문자열)을 갖는 줄을 찾아서 출력해주는 명령어

  • -i
    : 검색할 때 대소문자를 구분하지 않는다.
  • -v
    : 패턴과 일치하지 않는 줄을 출력한다.
  • -l
    : 주어진 패턴과 일치하는 패턴이 있는 파일의 이름만 출력한다.
  • egrep
    : 확장된. egrep 혹은 grep -P 사용.
  • 정규식
    : 복잡한 문자열 검색을 효율적으로 처리할 수 있게 해주는 문법식.
    이 파일 안의 내용을 정규식으로 찾아보자.

    ![](https://velog.velcdn.com/images/dmchoi224/post/20a7ba8e-bbc2-49ef-b8c2-2295eec9c7c7/image.png
  • grep -E c regTest (egrep c regTest)
  • grep -P ca..ron regTest
    ca로 시작하고 ron으로 끝나는 아무거나 찾는다
  • grep -P ca* regTest
    c로 시작하는 모든 걸 찾는다 a는 있어도 되고 없어도 된다.
  • grep -P ca*d regTest
    c있고 a자체가 여러번 있어도 되고 없어도 되고 d가 있는 것
  • grep -P ca? regTest
    a가 없거나 한번만 와야한다
  • grep -P ca?n regTest
    c로 시작하는데 a가 없거나 한번만 와야하고 n으로 끝나야 한다.
  • grep -P c{2}d regTest
    c가 2번오고 d로 끝난다
  • grep -P "go{1,2}" regTest
    g하고 o가 한번이거나 두번인 것을 찾는다.
  • grep -P ^ca regTest
    단어의 첫글자가 c로 시작하고 뒤에 a가 와야한다
  • grep -P [abc] regTest
    a나 b나 c가 있는 것
    이 사이 있는 것들 중 하나가 해당되는 것을 찾는다.
  • grep -P [^zxc] regTest
    대괄호 안에서는 zxc중에 하나라도 있는 애들 빼고 찾는다
  • grep -P [^a-zA-Z가-힣0-9] regTest
    대괄호 안 내용 다 제외하고 찾겠다
  • grep -P $'ef' regTest
    ef로 끝나는 것을 찾는다
  • find 안에서도 정규식을 응용할 수 있다.
  • find /home/ -name [abc]
    home디렉터리 안에서 a나 b나 c가 포함된 애들을 찾겠다

문제

  • finduser의 홈 디렉터리에서 모든 파일 중 내용이 linux가 들어있는 파일의 내용을 출력합니다.
    find finduser/ -type f -exec cat {} \; | grep linux
  • finduser의 홈 디렉토리에서 c3210 파일을 찾아 내용 중 대소문자 구별 없이 this가 들어간 문자열을 찾아 번호와 내용을 출력합니다
    find finduser/ -name c3210 -exec cat {} \; | grep -in this
  • /etc/passwd에서 user라는 문자열이 들어있는 줄을 찾아 홈디렉터리의 users라는 파일에 내용을 저장합니다
    grep user /etc/passwd > ~/users
    cat ~/users
  • finduser의 폴더에서 (하위포함) a,b,c로 시작하는 파일들을 찾아 해당 파일들의 내용을 전부 병합하는 d 파일을 반환하세요
    find finduser/ -type f -name '[abc]' -exec cat {} \;

    이걸 병합하라 했으니
    find finduser/ -type f -name '[abc]
    ' -exec cat {} > d \;
profile
코드를 두드리면 문이 열린다

0개의 댓글