상상을 초월한 조사 진전의find 지령

5279 단어 CLIfindtech

개시하다


나는 모든 사람이find지령을 사용한 적이 있다고 생각하지만, 매번 사용을 확인해야 한다. 매우 번거롭기 때문에 그 지령의 장점을 알아차리기 어렵다.기껏해야 조사할 때 찾고 싶은 정보가 있을 때나 셸스크립트를 쓸 때는 이루고 싶은 기능만 조사하고 반복해서 사용하며 잊어버리거나(혹은 자신이 그렇다고)find 지령의 상세한 옵션을 모르기 때문에 뇌사 상태에서 각 디렉터리를 방문하여 찾습니다. 이렇게 하면 효과가 없는 일도 발생할 수 있습니다. 모르겠지만 허용할 것입니다.실제로 이런 작업은 기본적으로 지령을 기억하기만 하면 한순간에 해결할 수 있다.
또 기본적으로 문자는 적게 쓰고'보면 알 수 있다'는 점에 주의해야 한다.

사용법


기준을 줄이기 위해 기본적으로 옵션을 추가합니다
$ find <dir_name> [<option>, ...]

디렉토리 구조


이번find 명령을 사용할 때 예로 사용한 디렉터리 구조는 다음과 같습니다
$ tree .

.
├── README.md
├── env
│   ├── dev
│   │   ├── main.tf
│   │   ├── outputs.tf
│   │   └── variables.tf
│   ├── prod
│   │   ├── main.tf
│   │   ├── outputs.tf
│   │   ├── task_definition
│   │   │   ├── container.tpl
│   │   │   ├── migration.json
│   │   │   └── nginx.tpl
│   │   ├── terraform.tfvars
│   │   ├── terraform.tfvars.sample
│   │   ├── user_data
│   │   │   └── server.sh
│   │   └── variables.tf
│   └── stg
│       ├── main.tf
│       ├── outputs.tf
│       └── variables.tf
└── module
    ├── acm
    │   ├── main.tf
    │   ├── outputs.tf
    │   └── variables.tf
    ├── alb
    │   ├── main.tf
    │   ├── outputs.tf
    │   └── variables.tf
    ├── ecr
    │   ├── main.tf
    │   ├── outputs.tf
    │   └── variables.tf
    ├── network
    │   ├── main.tf
    │   ├── outputs.tf
    │   └── variables.tf
    ├── route53
    │   ├── main.tf
    │   ├── outputs.tf
    │   └── variables.tf
    ├── server
    │   ├── main.tf
    │   ├── outputs.tf
    │   └── variables.tf
    └── storage
        ├── main.tf
        ├── outputs.tf
        └── variables.tf

용례


지정된 디렉토리의 PATH 보기


$ find <dir_name>
$ find env
env
env/prod
env/prod/outputs.tf
env/prod/main.tf
env/prod/user_data
env/prod/user_data/server.sh
env/prod/variables.tf
env/prod/task_definition
env/prod/task_definition/container.tpl
env/prod/task_definition/migration.json
env/prod/task_definition/nginx.tpl
env/dev
env/dev/outputs.tf
env/dev/main.tf
env/dev/variables.tf
env/stg
env/stg/outputs.tf
env/stg/main.tf
env/stg/variables.tf

어디다 저장했더라?


$ find . -name "*.tpl"

./env/prod/task_definition/container.tpl
./env/prod/task_definition/nginx.tpl

type | 목차만 표시하려면

type 사용d.
-type
   b block special
   c character special
   d directory
   f regular file
   l symbolic link
   p FIFO
   s socket
$ find . -type d

.
./module
./module/network
./module/alb
./module/ecr
./module/server
./module/storage
./module/acm
./module/route53
./env
./env/prod
./env/prod/user_data
./env/prod/task_definition
./env/dev
./env/stg

! and name | tf 파일 이외에 뭘 저장했지

-name에 검색할 대상의 문자열을 입력할 때 검색 대상을 줄일 수 있습니다.-iname에서caseinsensitive 검색을 할 수 있다(즉, 대문자, 소문자와 무관하게 검색할 수 있다)! 이후 부정적으로 축소할 수 있다.f를 더하지 않고 파일로 압축하면, 나머지 디렉터리도 표시됩니다.
$ find . -type f ! -name *.tf

./README.md
./env/prod/user_data/server.sh
./env/prod/task_definition/container.tpl
./env/prod/task_definition/migration.json
./env/prod/task_definition/nginx.tpl

mtime | 5~10일 전에 무슨 파일을 만들었더라


뭐, 엄밀히 말하면 아래의 지정 방법은 지정된 값을 포함하지 않고'6~9 사이에서 검색'을 하지만 먼저 간단하고 알기 쉬운 것을 기초로 한다.
$ find . -type f -mtime +5 -mtime -10

./module/network/outputs.tf
./module/network/main.tf
./module/network/variables.tf
./module/alb/outputs.tf

...

./env/dev/variables.tf
./env/stg/outputs.tf
./env/stg/main.tf
./env/stg/variables.tf

크기 | 디스크가 비정상적으로 압박되었지만...


-size
    k kilobytes (1024 bytes)
    M megabytes (1024 kilobytes)
    G gigabytes (1024 megabytes)
    T terabytes (1024 gigabytes)
    P petabytes (1024 terabytes)
$ find . -size +10M

./module/route53/big_file2.txt
./env/big_file1.txt
네?이게 뭐야...
$ ls -lh ./module/route53/big_file2.txt
-rw-------  1 user  staff   250M  2  6 15:27 ./module/route53/big_file2.txt

$ ls -lh ./env/big_file1.txt
-rw-------  1 user  staff   500M  2  6 15:27 ./env/big_file1.txt
500MB!? 이게 뭐야!!!!!
이런 일도 괜찮습니다.
또한 다음과 같은 범위 내에서 지정할 수 있다.
# 200MB ~ 300MBで検索
$ find . -size +200M -size -300M

./module/route53/big_file2.txt

어, 30분 전에 무슨 서류 만들었지?


$ find . -type f -mmin -30

./module/route53/big_file2.txt
./env/big_file1.txt
네, 죄송합니다. 그 큰 서류는 제가 직접 만든 것입니다...
이런 일도 괜찮습니다.

최후


find 지령, 편리해요.
나는 이 지령이 기억하고 조사할 때 매우 유용할 것이라고 생각한다. 이것은 다른 엔지니어들의 조사 능력과 관계가 없을 것이다.여기에 셸스크립트와 함께 사용하면 위력이 더 커진다.그렇지만ShellScript 제작 도구를 사용하면 블랙박스 코드가 되기 쉬우므로 추천하지 않습니다(그렇다고 하지만 ShellScript에서 "2개월 전 로그를 정기적으로 삭제하는 처리"를 실시했습니다...logrotate 명령이 있었지만 요구를 충족시키지 못했습니다...)
전혀 상관없지만 빨리 Go하지 않으면

좋은 웹페이지 즐겨찾기