Paepoi » ShellScript Tips » ShellScript Tips | ファイル名
ShellScript Tips | ファイル名
# 最終更新日 2019.12.01
ファイル名色々
#!/bin/sh # 半角空白や日本語があっても問題無いようです # basename, dirname というコマンドもある pic="/home/oyaji/pictures/name.jpeg" echo ${pic%/*} #=> /home/oyaji/pictures echo ${pic##*/} #=> name.jpeg echo ${pic%.*} #=> /home/oyaji/pictures/name echo ${pic##*.} #=> jpeg
拡張子の一括変換
#!/bin/sh # デジカメからコピーした *.JPEG を *.jpg に変換 for PIC in *.JPEG; do mv $PIC ${PIC%JPEG}jpg done
大文字小文字を区別しないで画像拡張子を選択
bash の場合#!/bin/bash # shopt で大文字小文字を区別しないようにする shopt -s nocasematch PICS="a.Jpg b.jpeg c.png D.JPEG e.mjpeg f.gif jpg.txt" for fn in $PICS; do [[ $fn =~ \.(jpe?g|png|gif)$ ]] && echo $fn donezsh の場合
#!/bin/zsh # 大文字小文字を区別しない方法が解らなかったので小文字化 # バックスラッシュ2つに注意 PICS=(a.Jpg b.jpeg c.png D.JPEG e.mjpeg f.gif jpg.txt) for fn in $PICS; do [[ $fn:l =~ \\.(jpe?g|png|gif)$ ]] && echo $fn done
連番ファイルのダウンロード
#!/bin/sh # 001.jpg - 200.jpg だった場合 for (( i=1; i<201; i++ )); do n=`printf %03d.jpg $i` wget http://なんちゃらどっとこむ/${n}.jpg done # 1.jpg - 200.jpg だった場合 for (( i=1; i<201; i++ )); do wget http://なんちゃらどっとこむ/${i}.jpg done # ゼロ詰めでないならブレース展開という手段も wget http://なんちゃらどっとこむ/{1..200}.jpg # zsh ならゼロ詰めも可能 wget http://なんちゃらどっとこむ/{001..200}.jpg
1.jpg〜99.jpg を 001.jpg〜099.jpg にリネーム
#!/bin/sh for (( i=1; i<100; i++ )); do n=`printf %03d $i` mv $i.jpg $n.jpg done
Copyright(C) sasakima-nao All rights reserved 2002 --- 2024.