> 시스템 튜토리얼 > 리눅스 > Linux에서 Bash 스크립트를 사용하여 여러 파일로 텍스트를 바꾸는 방법

Linux에서 Bash 스크립트를 사용하여 여러 파일로 텍스트를 바꾸는 방법

尊渡假赌尊渡假赌尊渡假赌
풀어 주다: 2025-03-24 09:30:15
원래의
1004명이 탐색했습니다.

How To Replace Text In Multiple Files Using A Bash Script In Linux

If you have many files with outdated information, updating them manually is time-consuming. Whether it's fixing outdated file paths, renaming variables, or modifying config values, Bash provides powerful tools like grep, sed, and find to automate this task. In this guide, we will learn how to replace text across multiple files efficiently using a Bash script.

Table of Contents

Why and When Use Bash for Bulk Text Replacement?

Automating text replacement is useful for:

  • Updating variable names in code files.
  • Changing file paths in scripts.
  • Fixing incorrect configuration settings.
  • Renaming project names in documentation.

Instead of editing each file manually, a Bash script can do it in seconds.

Allow me to explain it with an example Bash script.

Problem: Bulk Replace Paths in Multiple Files

Imagine you have multiple files referring to old log file paths:

  • Old Path: ~/data/logs/app.log
  • New Path: ~/data/log/app.log

Instead of searching and replacing each instance manually, let’s automate it.

Step 1: Create a Test Directory and Sample Files

First, create a test environment before modifying real files.

Create a directory in your home folder:

mkdir -p ~/replace_test && cd ~/replace_test
로그인 후 복사

Create sample files containing the old path:

echo 'Log file: ~/data/logs/app.log' > script1.sh
echo 'ERROR_LOG="~/data/logs/app.log"' > config.env
echo 'echo "Processing ~/data/logs/app.log"' > process.sh
로그인 후 복사

Verify occurrences of the old path:

grep "~/data/logs/app.log" *
로그인 후 복사
로그인 후 복사

Sample Output:

config.env:ERROR_LOG="~/data/logs/app.log"
process.sh:echo "Processing ~/data/logs/app.log"
script1.sh:Log file: ~/data/logs/app.log
로그인 후 복사

Step 2: Replace Text in Multiple Files Using a Bash Script

Now, create a script named replace_text.sh:

#!/usr/bin/env bashif [[ $# -ne 3 ]]; then    echo "Usage: $0 <old_path> <new_path> <directory>"    exit 1fiOLD_PATH=$(printf '%s\n' "$1" | sed 's/[\/&]/\\&/g')NEW_PATH=$(printf '%s\n' "$2" | sed 's/[\/&]/\\&/g')SEARCH_DIR=$3echo "Replacing occurrences of: $1 -> $2 in $SEARCH_DIR"# Find and replace text safelyfind "$SEARCH_DIR" -type f -exec sed -i "s/$OLD_PATH/$NEW_PATH/g" {} +echo "Replacement completed."
로그인 후 복사

Step 3: Make the Script Executable

chmod +x replace_text.sh
로그인 후 복사

Step 4: Run the Script

Execute the script to replace all occurrences of ~/data/logs/app.log with ~/data/log/app.log:

./replace_text.sh "~/data/logs/app.log" "~/data/log/app.log" ~/replace_test
로그인 후 복사

Sample Output:

Replacing occurrences of: ~/data/logs/app.log -> ~/data/log/app.log in /home/ostechnix/replace_test
Replacement completed.
로그인 후 복사

Step 5: Verify the Changes

Run:

grep "~/data/log/app.log" *
로그인 후 복사

Sample Output:

config.env:ERROR_LOG="~/data/log/app.log"
process.sh:echo "Processing ~/data/log/app.log"
script1.sh:Log file: ~/data/log/app.log
로그인 후 복사

Ensure no old path remains:

grep "~/data/logs/app.log" *
로그인 후 복사
로그인 후 복사

If there's no output, the replacement worked.

This script,

  • Handles Special Characters: Escapes /, &, and other symbols correctly.
  • Uses find -exec sed: Safer than grep | xargs sed.
  • Efficient for Large Projects: Works on many files without excessive CPU usage.

You can now use this script on real files.

Precautions Before Running it on Real Files:

  • Backup Your Files: Always create a backup before making bulk changes
  • Test on a Small Sample: Run it on a test directory first, as we did with ~/replace_test.
  • Dry Run with grep: Check how many files will be affected. You can run grep -rl "~/data/logs/app.log" ~/replace_test/ to do it.
  • Manually Inspect Changes: After running the script, verify a few modified files.

Conclusion

In this tutorial, we learned how to replace text in multiple files using a simple Bash script. We have explained how this script automates path updates in multiple files, preventing errors and saving time with a practical example. Always test with backups before running on critical files.

Related Read:

  • Bash Shell Scripting Tutorial For Beginners

위 내용은 Linux에서 Bash 스크립트를 사용하여 여러 파일로 텍스트를 바꾸는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿