상상을 초월한 조사 진전의find 지령
개시하다
나는 모든 사람이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하지 않으면
Reference
이 문제에 관하여(상상을 초월한 조사 진전의find 지령), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ryoatsuta/articles/9a6e41515faa43텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)