books/Linux

[모두의 리눅스] 셸 스크립트 (4) 검색 명령어

836586697769 2024. 8. 9. 20:06

xargs <실행하고 싶은 명령어>: 표준 입력으로 전달받은 리스트를 인자로 실행

# find 명령으로 출력된 파일 리스트에 대해 ls -l을 실행
$ find . -type f -name '*.txt' | xargs ls -l

# 현재 디렉터리 아래의 모든 파일에 대해 grep을 실행
$ find . -type f | xargs grep ldk

 

findgrep.sh

#!/bin/bash

pattern=$1
directory=$2
name=$3

# 두 번째 인자가 빈 문자열이면 기본값으로 현재 디렉터리를 설정
if [ -z "$directory" ]; then
	directory='.'
fi

# 세 번째 인자가 빈 문자열이면 기본값으로 '*' 설정
if [ -z "$name" ]; then
	name='*'
fi

$ find"$directory" -type f -name "$name" | xargs grep -nH "$pattern"
  • 검색 패턴을 인자로 지정하여 현재 디렉터리 아래의 모든 파일에서 검색
  • 검색하고 싶은 문자열이 어떤 파일에 있을지 모를 때 편리
  • grep -nH 옵션: 검색된 행 번호 출력