
UNIX Cafe | 第21回
UNIX Cafe の静かな午後。
ミナちゃんが、取材で集めた .docx ファイルを開きながら困った顔をしています。
ミナちゃんユニ先生〜!
Wordファイルでもらった画像をブログで使いたいんです。でも、どうやったら取り出せるのかな?



ふむふむ。そんな時は、ターミナルを使って .docx の中身を取り出せば楽だよ。.docx は、実は ZIP ファイルと同じ仕組みなんだ。
.docxは ZIP 形式だった
.docx ファイルは、文章や画像、設定が “フォルダ構造” のようにまとめられたZIP 形式のファイルです。だから .docx → .zip に名前を変えるだけで中身を取り出せます。
ターミナルでの手順
STEP1).docx を .zip に変換
bash
$ mv sample.docx sample.zip


mv は “移動・名前変更”コマンドだね!



そう。ここでは 名前を変えてるだけだよ☕
- .docx を .zip に変換(リネーム)する意味はある?
-
必須ではありませんが、トラブルを避けるためにやっておくと安心な方法です。
- なぜ .zip にリネームするの?
-
OS バージョンや環境によって
.docx→unzipが うまく動かないことがあります。
STEP2)ZIPを展開する
bash
$ unzip sample.zip -d output


できた!outputフォルダができてるね!



うん。画像ファイルは/word/media/ に入ってるよ。
画像の場所
output/
└─ word/
└─ media/
├─ image1.jpeg
├─ image2.png
├─ image3.jpeg
...



ここに、全部入ってる〜!やった〜!



ファイル形式は、JPEG / PNG / GIF など
文書が持っている形式そのままだよ☕
(補足).docx をそのまま unzip できる場合
bash
$ unzip sample.docx -d output


えっ、名前を変えなくてもOKなの?



そう。でもうまく行かない場合もあるので.zip にリネームしておく方が確実だよ☕
.docx → 画像 を自動抽出するシェルスクリプト



毎回 unzip するの、ちょっとめんどう…
自動でできたらいいなぁ〜



お安い御用さ☕
このスクリプトを使えば、.docx を渡すだけで画像を全部取り出してくれるよ。
#!/bin/bash
# ===== .docx から画像を取り出すスクリプト =====
# 使い方:
# ./docx_extract_img.sh sample.docx
# ./docx_extract_img.sh doc_files/*.docx ←複数OK*/
# =====
# 引数がない場合
if [ $# -eq 0 ]; then
echo "使い方: $0 <docxファイル> ..."
exit 1
fi
# 1ファイルずつ処理
for file in "$@"; do
# 存在チェック
if [ ! -f "$file" ]; then
echo "⚠ ファイルが見つかりません: $file"
continue
fi
# 拡張子を除いたファイル名を取得
base=$(basename "$file" .docx)
# 出力フォルダ
outdir="${base}_images"
echo "📦 展開中: $file → $outdir"
# 出力フォルダ作成
mkdir -p "$outdir"
# docx を unzip(word/media を取り出す)
unzip -q "$file" "word/media/*" -d "$outdir"
# 画像フォルダが存在するかチェック
if [ -d "$outdir/word/media" ]; then
mv "$outdir/word/media"/* "$outdir"/
rm -rf "$outdir/word"
echo "✅ 完了!画像を $outdir/ に保存しました"
else
echo "⚠ 画像が見つかりませんでした: $file"
fi
done
使い方
スクリプトの保存
bash
$ ~/docx_extract_img.sh例として、ホームに保存しています。
実行権限を付ける
bash
$ chmod +x ~/docx_extract_img.sh単一ファイルを処理
bash
$ ./docx_extract_img.sh sample.docx抽出された画像はsample_images/に入ります。



わぁ…!
フォルダ名まで整理してくれるんだね✨
便利〜!



うん。
日々の作業を少しずつ楽にしていくのが
Unix Cafe の流儀だよ☕✨
複数ファイルもOK
bash
$ ./docx_extract_img.sh *.docxreport.docx→report_images/notes.docx→notes_images/
など、それぞれ自動でフォルダに入ります。
出力構造
sample.docx
↓
sample_images/
├ image1.jpeg
├ image2.png
├ …
まとめ
| 操作 | コマンド |
|---|---|
| docx → zip に変換 | mv sample.docx sample.zip |
| ZIP の展開 | unzip sample.zip -d output |
| 画像がある場所 | output/word/media/ |
エピローグ



ターミナルだけで画像を取り出せるなんて知らなかったよ〜。
とっても便利!



Word が使えない環境でも画像だけ取り出したい時に便利だね☕
またひとつ、Unix Cafe のスキルが増えました。



うん!
今度は PDF の中から画像を取り出す方法も知りたいな!



よし、じゃあ次のメニューに追加しておこう☕✨




