Windows 10의 Bash에서 문자열 검색, 치환, 파일 삭제하기


Linux에는 grep, sed, awk에서 정규 표현식(regex)을 가미하여 파일의 문자열을 검색 및 치환하고, 여러 개의 파일을 동시에 삭제하거나 내용도 한꺼번에 여러개의 파일에서 작업할 수 있다

특히 여러 개의 파일에 동시 작업을 하기 위해서는 pipe와 xargs를 sed와 연결하여 작업하면 좋다.

아래 이미지는 Windows 10의 Bash에서 작업한 내용이다.

1

grep -l “messenger” *은 현재 디렉터리에 있는 모든 파일을 찾아서 messenger라는 문자열이 있는 파일을 찾는 것이다

find . -type f -print0 | xargs -0 sed -i ‘s/messenger/John the Baptist/g’ 는 현재 위치에서 파일을 일단 찾아서 각 파일에 존재하는 messenger 문자열을 John the Baptist로 치환하여 저장하는 것이다

cat myproject.txt | grep John은 실제로 작업이 적용되었는지 확인하기 위해서 myproject.txt 파일을 편집기로 열지 않고 확인해 본 것이다. messenger 문자가 John the Baptist로 제대로 치환이 되었다

2

find . -name “*.txt” | xargs sed -i ‘s/the Baptist//g’ 는 확장자 .txt를 갖는 파일을 모두 찾아서 파일의 내용 중에 the Baptist가 있으면 그것을 공백으로 치환하는 것이다. 즉, the Baptist 문자열을 삭제하는 것이다. 실제로 파일 내용을 보니 the Baptist라는 글자가 삭제된 것을 알 수 있다.

3

grep -l “God” * 은 God이라는 문자열이 포함된 파일을 찾는 것이다. God이라는 문자열이 있는 파일을 몽땅 찾아서 한꺼번에 삭제하는 것이 grep -l “God” * | xargs rm -rf 명령이다. 실제로 삭제되었는지 확인하기 위해서 ls -l을 해보니 God 문자열이 포함된 myproject.txt와 yourpjt.txt 파일이 모두  삭제된 것을 알 수 있다

Windows10에서 Linux를 사용할 수 있어서 참 좋네. Linux의 장점이 문자열 검색 및 치환, 그리고 특정한 문자열이 포함된 파일들을 모두 찾아서 한꺼번에 삭제하는 것이다.

Leave a comment