9
11

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 5 years have passed since last update.

ファイルの拡張子の一括置換

Posted at

後輩が1ファイルずつ変換コマンドを作っていたので、
こういうやり方があるよと調べながら教えたのでメモ。

  • カレントディレクトリにあるファイルの.txtのファイルを.csvに変換する例
ls *txt | sed -e s/\.txt// | awk '{print $1 ".txt " $1 ".csv"}' |xargs -n 2 mv

若手の時に先輩にこんなコマンドを渡されても
何が何だかわからず調べることも出来なかったのでちと説明。
lsの代わりに「find . -name '*txt'」とかだとカレントディレクトリ以外もいける。

1. 一覧を出す

$ ls *txt
foo.txt		hoge.txt

2. ファイル名だけにする

# .txtを置換して消してるだけ。
$ ls *txt | sed -e s/\.txt//
foo
hoge

【 sed 】 文字列の置換,行の削除を行う

3. mv用のパラータの作成

$ ls *txt | sed -e s/\.txt// | awk '{print $1 ".txt " $1 ".csv"}'
foo.txt foo.csv
hoge.txt hoge.csv

【 awk 】コマンド(基本編)

4. あとはmvコマンドにパラメータを流す

$ ls *txt | sed -e s/\.txt// | awk '{print $1 ".txt " $1 ".csv"}' |xargs -n 2 mv

【xargs】標準入力から生成したコマンドラインを実行する

9
11
2

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
9
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?