Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2722

リネームしたい?任せときー。

$
0
0

え?ファイル名をリネームしたいって?

そんなの朝飯前。コマンドで一発だよね。

#標準的なリネームコマンド
rename s/aaa/bbb/ ./*
#centosはこう
rename aaa bbb *

$ a.txt  bbb.txt  kkk.txt

お礼は要らないよ。

え?先頭に連番がつけたいんだって?い、いいよ?

#ここからechoで確認する。実行するときは | sh を最後につける。
#cat -n で番号を付けてそれを利用する。
ls | cat -n | while read n f ; do echo "mv -n ${f} ${n}_${f}"; done 

mv -n a.txt 1_a.txt
mv -n bbb.txt 2_bbb.txt
mv -n kkk.txt 3_kkk.txt

どや?楽勝でしょ。

え?え?先頭に0で埋めた4桁の数字を付けたかったって?

#printf で桁数指定で出力する。
ls | cat -n | while read n f ; do echo "mv -n ${f} $(printf %04d $n)_${f}"; done;

mv -n 1.txt 0001_1.txt
mv -n 10.txt 0002_10.txt
mv -n 11.txt 0003_11.txt
mv -n 2.txt 0004_2.txt

出来たよ。え?違う?

1.txtの次は2.txtが自然だって?ああナチュラルソート順ね。

#"える"ではなく"いち",vでバージョンソート,
 ls -1vp | cat -n | while read n f ; do echo "mv -n ${f} $(printf %04d $n)_${f}"; done;

mv -n 1.txt 0001_1.txt
mv -n 2.txt 0002_2.txt
mv -n 10.txt 0003_10.txt
mv -n 11.txt 0004_11.txt
mv -n oh my file.txt 0005_oh my file.txt

できたよ?

え、上手く行かない?ファイル名にスペースが入ってるのね。。

 ls -1vp | grep -v "/$" | cat -n | while read n f ; do echo "mv -n  '"${f}"' '$(printf %04d $n)_${f}'"; done;

mv -n  '1.txt' '0001_1.txt'
mv -n  '2.txt' '0002_2.txt'
mv -n  '10.txt' '0003_10.txt'
mv -n  '11.txt' '0004_11.txt'
mv -n  'oh my file.txt' '0005_oh my file.txt'

これでいいんじゃない?

え、やっぱり時間順だって?

ls -1ptr | grep -v "/$" | cat -n | while read n f; do echo "mv -n '"${f}"' '"$(printf %04d $n).${f#*.}"'"; done
mv -n '2.txt' '0001.txt'
mv -n '11.txt' '0002.txt'
mv -n '10.txt' '0003.txt'
mv -n '1.txt' '0004.txt'
mv -n 'oh my file.txt' '0005.txt'

ど、どや?
え、自分でやりたい?

コマンドより安全にリネームできるツールを作ったからそっちを使ってくれー。

リネム
https://rinemu.com/

はい、ということで、ファイルAPIとjavascriptで作ったリネームツールです。
リネームしたものはZIP圧縮されてダウンロードするので、うっかりコマンド上書きされる心配がないです。

これは nuxt.js で出来ているので、また次回の記事で紹介したいと思いますー。

おわり

簡単と思ってたら意外と手こずって、スタックオーバーフローを漁ることになり、
それでも中途半端にしか載っていないので、まとめてみました。
ツールを作る羽目にならないように、次はサクッと決めたいですねー。

参考

https://stackoverflow.com/questions/3886295/how-do-i-list-one-filename-per-output-line-in-linux
https://stackoverflow.com/questions/22948042/bash-sort-like-windows-natural-sort-order


Viewing all articles
Browse latest Browse all 2722

Trending Articles