ファイルを拡張子ごとにフォルダへ自動で振り分ける方法|シェルスクリプトで整理を効率化

当サイトでは、コンテンツの一部に広告を掲載しています。
第29回|UNIX Cafe「フォルダ内の画像を自動で分類」

UNIX Cafe | 第29回

目次

はじめに:その「ダウンロード」フォルダ、ごちゃ混ぜになっていませんか?

パソコンを使っていると、いつの間にか「ダウンロード」フォルダがカオスな状態に…なんて経験はありませんか?

  • スマホから取り込んだ写真(JPG, PNG, HEIC…)
  • 仕事で受け取った資料(PDF, DOCX…)
  • Webから保存した画像(WebP, GIF…)

様々な種類のファイルがごちゃ混ぜになり、「あのファイルどこだっけ?」と探すのに時間がかかってしまう。これは多くの人が抱える共通の悩みです。

この記事では、そんな面倒なファイル整理をコマンド一発で自動化する方法を学んでいきます。

使うのは、MacやLinuxのターミナル(黒い画面)だけ。この記事を最後まで読めば、あなたは拡張子(ファイルの種類)ごとにファイルを専用フォルダへ自動で振り分けるシェルスクリプトを手に入れることができます。

なぜコマンドラインでファイル整理なのか

マウスで一つずつフォルダにドラッグ&ドロップする方法もありますが、コマンドラインにはそれを遥かに凌駕するメリットがあります。

  • 圧倒的なスピード: 何百、何千というファイルも、数秒で整理が完了します。
  • 正確性: 人為的なミス(移動先の間違いなど)が起こりません。
  • 再現性: 一度スクリプトを作ってしまえば、いつでも誰でも同じ整理作業をワンタッチで実行できます。
  • 自動化: 定期的にスクリプトを実行するように設定すれば、「何もしなくても常にフォルダが整理されている」状態を作り出すことも可能です。

【基本編】mkdirとmvで手動整理

まずは、自動化の基本となる2つのコマンドを覚えましょう。

1. mkdir:フォルダ(ディレクトリ)を作成する


jpg, png, webp という3つのフォルダを一度に作成します。-p オプションは「もしフォルダが既に存在していてもエラーにしない」というおまじないです。

mkdir -p jpg png webp

2. mv:ファイルやフォルダを移動する

*(ワイルドカード)を使って、特定の拡張子を持つファイルをまとめて移動します。

全てのJPGファイルを jpg/ フォルダに移動する

mv *.jpg jpg/

全てのPNGファイルを png/ フォルダに移動する

mv *.png png/

全てのWebPファイルを webp/ フォルダに移動する

mv *.webp webp/

この3つのコマンドだけでも、手作業よりはずっと速く整理ができますね。

【応用編】forループでファイル整理を自動化する

さて、ここからが本番です。先ほどのmkdirとmvの処理を、**forループ(繰り返し処理)**を使って完全に自動化します。

「jpg, png, webpという拡張子を順番に処理してね」という命令をシェルに与えるのです。

for ext in jpg png webp
do
    # 拡張子と同じ名前のフォルダを作成(なければ作る)
    mkdir -p "$ext"
    
    # その拡張子を持つファイルを、対応するフォルダへ移動
    mv *."$ext" "$ext"/
done

この3行のコードをターミナルに貼り付けて実行するだけで、JPGはjpgフォルダへ、PNGはpngフォルダへ、WebPはwebpフォルダへと、自動で仕分けが行われます。

【実践編】いつでも使える「ファイル整理スクリプト」の完成

このforループを、いつでも呼び出せる**「自分だけの整理コマンド(シェルスクリプト)」**にしてしまいましょう。

以下の内容を organize_files.sh のような名前でファイルに保存します。

#!/bin/bash
#
# organize_files.sh
# 使い方: このスクリプトを整理したいフォルダに置いて実行すると、
#         指定した拡張子ごとにファイルが自動で分類されます。
#

# --- ここに整理したい拡張子をスペース区切りで追加できます ---
EXTENSIONS="jpg png webp pdf heic"

echo "ファイル整理を開始します..."

for ext in $EXTENSIONS
do
    # 対象の拡張子を持つファイルが存在するかチェック
    # (存在しない場合にエラーメッセージが出るのを防ぐ)
    if ls *."$ext" 1>/dev/null 2>&1; then
        echo "📂 ${ext} ファイルを分類中..."
        mkdir -p "$ext"
        mv *."$ext" "$ext"/
    fi
done

echo "✅ 整理が完了しました!"

スクリプトの使い方

chmod +x organize_files.sh
  • 作成したファイルに、実行権限を与えます。
  • 整理したいファイルがたくさんあるフォルダに、このスクリプトファイルを置きます。
  • ターミナルでそのフォルダに移動し、スクリプトを実行します。
./organize_files.sh

これで完了です!スクリプト内の EXTENSIONS=”…” の部分にPDFやHEICなどを追加すれば、あなたのニーズに合わせて自由にカスタマイズできます。

ミナちゃん

JPGやPNG以外でもOKです。
HEIC・GIF・TIFFなど、好きな拡張子を追加してね。

まとめ:ファイル整理は「作業」から「仕組み」へ

最後に、今回の重要なポイントをまとめます。

  • ファイル整理は、mkdir(フォルダ作成)と mv(移動)が基本。
  • forループを使えば、複数の拡張子に対する処理を自動化できる。
  • 一連の処理をシェルスクリプトにすることで、いつでもワンタッチで実行可能な「自分だけの整理ツール」が手に入る。
  • この考え方を応用すれば、「撮影日ごと」「ファイル名ごと」など、さらに高度な自動整理も可能になる。

手作業でのファイル整理は、時間もかかる上にミスも起こりがちです。コマンドラインを使って「整理する仕組み」を一度作ってしまえば、あなたは二度とフォルダの混乱に悩まされることはありません。

ぜひこの強力な自動化の第一歩を踏み出して、クリーンで快適なデジタル環境を手に入れてください。

さらに学びたいあなたへ

📘 用途ごとに選ぶ Linux のおすすめ本

あわせて読みたい
レベル・用途別おすすめ Linux 本リスト|UNIX Cafe UNIX Cafe | 第65回 Linux の世界には、「はじめて触る人」「コマンドを覚えはじめた人」「サーバーに挑戦したい人」と、さまざまな段階があります。そんなときに、自分...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe 編集部

UNIX Cafe は、むずかしい言葉をできるだけ使わず、物語を読むような気持ちで気軽に学べる場所です。
プログラミングは、アイデアをコンピューターに伝えるための「ことば」。
簡単な単語と文法を覚えることで、誰でもターミナルから便利なコマンドを使えるようになります。
コーヒーを片手に立ち寄るような気持ちで、やさしいプログラミングの世界を、
そっとのぞいてみてください。

目次