0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

複数のフォルダ内の文字列を置換する方法

Last updated at Posted at 2023-04-07

困ったこと

以下のような構造のフォルダ内のテキストファイル(text1.txt~tex4.txt)内の文字列を一括で置換したい.

├─dir_parent
│  ├─dir_child1
│  |    ├─text1.txt
│  |    └─text2.txt
│  └─dir_child2
│      ├─text3.txt
│      └─text4.txt

解決策

以下の手順で解決可能
1.cd コマンドを使用して、置換対象のテキストファイルが含まれる親フォルダに移動する.
2.以下のコードを実行.フォルダ内の文字列hageがhogeに置換される.

find . -type f -name "*.txt" | xargs sed -i '' 's/hage/hoge/g'

応用すると複数の文字列も置換可能

find . -type f -name "*.txt" -exec sed -i '' -e 's/2022\/3\/4/2023\/3\/3/g' -e 's/2022\/4\/6/2024\/4\/5/g' {} +

少し解説

findでカウントディレクトリ内の置換対象のテキストファイルのリストを作成する.
今回であれば全ての.txtファイル.

find . -type f -name "*.txt"

xargsで標準入力から受け取った値を引数に渡す.(らしい)
sed -iで文字列の置換を直接行う.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?