後輩が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
3. mv用のパラータの作成
$ ls *txt | sed -e s/\.txt// | awk '{print $1 ".txt " $1 ".csv"}'
foo.txt foo.csv
hoge.txt hoge.csv
4. あとはmvコマンドにパラメータを流す
$ ls *txt | sed -e s/\.txt// | awk '{print $1 ".txt " $1 ".csv"}' |xargs -n 2 mv