본문 바로가기

개발/Bash, Shell Script

쉘 스크립트에서 와일드카드(*) 써서 파일 찾기

우분투

find /etc -name "*.conf"

식으로 사용하면 된다. (큰따옴표 없어도 됨)

 

리눅스/MacOS

find -f [검색어]
find -f [A-Z]AA.txt

 

나는 엘라스틱서치의 pid 파일을 각 서버마다 체크하며 프로세스가 살아있는지 체크해야 했는데,

서버마다 파일 이름이 es_aa.pid, es_bb_cc.pid 식으로 달라

es_*.pid 와 같은 와일드카드 형식으로 파일을 찾고 싶었다.

ES="es_" 

FIND=`ssh -o StrictHostKeyChecking=no -n -p $port $ip find ${PID_PATH} -name "${ES}*.pid"`

if [ $FIND ]; then
  ~
  ~

find [경로] -name [파일이름-변수가능]*.pid

이런 식으로 하면 찾을 수 있고, 이 자체도 변수에 할당 가능하다. 그러면 찾은 파일 자체가 변수가 된다.

그러면 if [ $ FIND ]; then 처럼

해당 파일이 있을 경우~ 로 조건문을 만드는 것도 가능하다.  

 

와일드카드나 [] 사용해서 파일 검색, 이동하는 방법

mv aa_* [파일경로] : aa_로 시작하는 여러 파일들을 한번에 목적지로 이동

a?b는 정확히 1개의 문자만 사이에 들어감.

[A,B,C]_number : A 또는 B 또는 C로 시작되고 _number로 끝나는
파일 이름A_number, B_number, C_number 검색.

[A-Za-z]도 가능! [A-C]도 가능!

find -name [A-C]number

find -name number[0-9]