POINT
- Shell Scriptでファイル名一括編集する方法.
- ファイル名の切り出し・文字列の追加の方法についての解説.
Shell Scriptでファイル名一括編集する方法についてまとめました.
バッチファイルでファイル名を編集する方法は次の記事を参照してください:
ファイル名切り出し
例1:拡張子".txt"のファイルの3〜5文字目を抜き出す① (abcdefg.txt→cde.txt)
#!/bin/sh dir=作業ディレクトリのpath cd $dir for file in *.txt do After=`echo $file | cut -c 3-5` mv "${file}" "${After}.txt" done
ここで,
- $変数, ${変数}:変数の値参照
- $(コマンド), `コマンド`:コマンド置換
- ファイルを上書きする際に問い合わせるようにするには "mv -i" とします.
例2:拡張子".txt"のファイルの3〜5文字目を抜き出す② (abcdefg.txt→cde.txt)
#!/bin/sh dir=作業ディレクトリのpath cd $dir for file in *.txt do After="${file:2:3}" extension="${file##*.}" mv "${file}" "${After}.${extension}" done
ここで,
- ${変数:数字1:数字2}:変数の"数字1"より後の"数字2"文字を出力.
- ${変数##ワード}:変数の頭から"ワード"にマッチする部分を取り除いた文字列を出力
(最大マッチ,#に変えれば最小マッチ)
文頭/末尾への文字列付加
ファイル名の文頭に"P-"を,末尾に"-S"を追加する(abc.txt→P-abc-S.txt)
#!/bin/sh Prefix=P- Suffix=-S dir=作業ディレクトリのpath cd $dir for file in *.txt do filename="${file%.*}" extension="${file##*.}" mv "${file}" "${Prefix}${filename}${Suffix}.${extension}" done
ここで,
- ${変数%ワード}:変数末尾から"ワード"にマッチする部分を取り除いた文字列を出力
(最小マッチ,%%に変えれば最大マッチ) - ${変数##ワード}:変数の頭から"ワード"にマッチする部分を取り除いた文字列を出力
(最大マッチ,#に変えれば最小マッチ)
参考記事・文献
- 参考記事1:sedコマンド
- 参考記事2:xargs
- 参考記事3:その他
- 参考文献