Windowsエラー
 Computer >> コンピューター >  >> トラブルシューティング >> Windowsエラー

Linuxスクリプトを活用してWindows 10のデスクトップを自動整理する方法

この記事のタイトルを初めて見たとき、「技術的に間違っているのでは?」と感じるかもしれません。LinuxとWindowsはまったく別のOSであり、互いに無関係な存在だからです。かつてWindows上でLinuxスクリプトを使うには、Cygwinのようなツールをインストールするか、デュアルブート環境を構築するか、Sambaを導入するしかありませんでした。

しかし、Windows 10の登場によって状況は一変しました。Microsoft Storeから複数のLinuxディストリビューションを入手できるようになったのです。WSL(Windows Subsystem for Linux)を利用すれば、Windows環境の中で本物のLinuxコマンドラインが使えます。

Windowsマシン上でLinuxスクリプトを使う最大のメリットは、強力なbashスクリプト言語でタスクを自動化できることです。特にPowerShellやDOSバッチファイルよりもLinuxシェルに慣れている方にとっては大きな利点でしょう。この記事では、散らかったWindowsデスクトップを自動的に整理する「bash」スクリプトの作成方法を解説します。Linux初心者の方でも、基本を学びながら実用的なツールを作れる内容になっています。

ここでは、Microsoft Storeから入手できるUbuntu Linuxターミナルを使用します。これにより、bash、ssh、git、aptなど、さまざまなLinuxコマンドが利用可能になります。まだインストールしていない場合は、先にセットアップを済ませておいてください。

Linuxコマンドラインの起動

Ubuntuをインストールして起動すると、次のようなコマンドライン画面が表示されます。これがbashのLinuxコマンドラインです。

それでは、スクリプトを作成していきましょう。ファイルの編集には、Windowsのメモ帳でも、viなどLinux系エディタでも、使い慣れたものを使用できます。

Ubuntuターミナルを開いた直後は、Ubuntuワークスペース内のホームディレクトリにいます。これは以下のコマンドで確認できます。

echo $HOME

実行すると、ホームディレクトリのパスが出力されます。Linuxではディレクトリの区切りにフォワードスラッシュ「/」を使用する点に注意してください。

作業しやすいよう、スクリプトはホームディレクトリに配置することにします。

デスクトップの場所を特定する

次に、自分のデスクトップがLinuxパスとしてどこにあるのかを調べます。正しいディレクトリに対してファイル操作を行うために必要な情報です。

ターミナルで「cd /」と入力すると、Ubuntu環境のルート領域に移動します。

続けて「ls」と入力しましょう。

これでLinux配下のすべてのディレクトリ一覧が表示されます。

ユーザーのデスクトップを見つける必要があります。Cドライブにある場合は、「mnt」ディレクトリに移動してください。ここにWindowsの各ドライブがマウントされて表示されます。

次に、デスクトップがどのディレクトリにあるかを確認します。通常、Windowsのエクスプローラーで「クイックアクセス」内のデスクトップアイコンを右クリックすれば、デスクトップのパスを確認できます。

そのパスをもとに、ターミナルからLinuxのコマンドで該当ディレクトリへ移動します。Windowsのバックスラッシュ「\」は、Linuxではフォワードスラッシュ「/」に相当することを忘れないでください。筆者の場合、移動先のパスは以下のようになります。

cd /mnt/c/Users/gofor/OneDrive/Desktop

移動したら「ls」コマンドでデスクトップ上の全ファイルを一覧表示できます。

筆者のデスクトップのように散らかっていると、長いファイルリストがずらりと並ぶはずです。実際、筆者はモニター3台すべてに大量のアイコンが並んでいました。そこで、これらのファイルを分類・整理する必要があります!

整理の仕組み:ファイル種別ごとのフォルダ分け

今回作成するスクリプトは、各ファイルの種類を判別し、デスクトップ上に種別ごとの名前が付いたフォルダへ自動的に振り分けます。

例えば、以下のような分類です。

  • ショートカットファイル(*.lnk)→「SHORTCUTS」フォルダへ
  • 画像ファイル(.jpg、.png、.bmp、.svg)→「IMAGES」フォルダへ
  • ドキュメントやOfficeファイル(.docx、.pdf、.xlsなど)→「OFFICEDOCS」フォルダへ

スクリプトを実行すれば、すべてのファイルがカテゴリ別のディレクトリに整理され、デスクトップがすっきりします。フォルダの種類やファイル条件は自由に定義でき、ファイル形式だけでなく「HRFILES」「PROJECTFILES」のようなプロジェクト単位の分類も可能です。今回はファイルタイプ別に整理する例を紹介します。

カテゴリ定義ファイル(CSV)とスクリプトの準備

この仕組みを使うには、次の2つのファイルが必要です。

A) カテゴリ名と対応するファイル拡張子を記述したCSVファイル(カンマ区切り)。各行の最初の項目がカテゴリ名=デスクトップ上に作成されるフォルダ名となります。任意のエディタで作成できますが、ここではメモ帳を使います。
B) CSVファイルを読み込んで整理処理を実行するLinuxスクリプト。

ターミナルで現在のディレクトリにファイルを作成するには、次のように入力します。

notepad cleanup.csv

ファイルがまだ存在しないため、新規作成の確認ダイアログが表示されたら「はい」を選択してください。

CSVファイルには、「カテゴリ,拡張子1,拡張子2,拡張子3,…」という形式で、1行につき1カテゴリを記述します。

SHORTCUTS,lnk
IMAGES,jpg,png,svg
DOCUMENTS,txt,docx,doc,pdf

最初のフィールドがデスクトップ上のフォルダ名で、残りのフィールドがそのフォルダへ移動したいファイルの拡張子です。つまり、*.lnkファイルはすべてSHORTCUTSフォルダへ、*.jpg・*.png・*.svgファイルはIMAGESフォルダへ、*.txt・*.docx・*.doc・*.pdfファイルはDOCUMENTSフォルダへ移動されます。

CSVファイルが完成したら、いよいよスクリプト本体の作成です。スクリプト名は「cleanup.sh」とします。なお、このスクリプトには最小限のチェック機能しかないため、CSVファイルの形式が正しいことを必ず確認してください。誤った形式では動作しません。スクリプト内では、ファイルやフォルダの存在確認のみを行います。

Unix系エディタ(viなど)に慣れている方はターミナルで直接編集しても構いませんし、メモ帳を使うこともできます。

notepad cleanup.sh

スクリプトの冒頭では、読み込むCSVファイル名と、整理対象のデスクトップの場所を変数として設定します。「<」と「>」で囲まれた部分はプレースホルダーなので、自分の環境に合わせた情報を入力してください。

DESKTOP=/mnt/c/Users/<your windows location>/Desktop
CSV=cleanup.csv

スクリプト全体は後述の通りです。コマンドの意味を理解したい方はコメント(#で始まる行)を読み、不明なコマンドがあればLinuxコマンドラインで「man <コマンド名>」と入力すれば詳細な説明を確認できます。

スクリプトを実行可能にして実行する

ホームディレクトリからスクリプトを実行するには、まず実行権限を付与します。

chmod +x cleanup.sh

スクリプトはカレントディレクトリにあるため、次のように入力して実行します。

./cleanup.sh

実行前後のデスクトップの様子を比較してみましょう。移動されたファイルを格納するフォルダが新しく作成され、デスクトップがかなりすっきりしているのがわかります。

また、SHORTCUTSフォルダを開けば、デスクトップから移動されたショートカットがすべて収められています。

デスクトップ整理用Linuxスクリプトの全文

スクリプト内の「#」で始まる行はコメントで、処理の内容を説明しています。参考にしてください。

# ローカルデスクトップ(または整理したい任意のディレクトリ)の場所と、CSVファイル名を変数に設定します。

DESKTOP=/mnt/c/Users/gofor/OneDrive/Desktop
CSV=cleanup.csv

# Linuxのtestコマンドと「-f」フラグを使って、cleanup.csvファイルが存在するかどうかを確認します。
# ファイルが存在しない場合は、エラーメッセージを出力してスクリプトを終了します。

if [ ! -f ${CSV} ]then
echo The cleanup.csv file does not exist.
exit -1
fi

# CSVファイルがDOS形式で保存されていた場合に備え、キャリッジリターン文字を削除してUnix形式に変換します。
# 結果を一時ファイルに出力し、元のファイル名に戻します。

tr -d '\r' < $CSV > temp.csv
mv temp.csv $CSV

# CSVファイルを1行ずつ読み込み、最初の引数(カテゴリ名=ディレクトリ名)を取得します。
# 残りの引数は、そのディレクトリへ移動するファイルの拡張子です。

while read csvline
do
count=1
for filetype in `echo "$csvline" | tr , '\n'`
do
if [ $count -eq 1 ] then
# 最初の引数の場合、フォルダが既に存在するか確認し、なければ作成します。
if [ ! -d ${DESKTOP}/$filetype ] then
# ディレクトリが存在しないため、新規作成します。
mkdir ${DESKTOP}/$filetype
fi
CATEGORY=${filetype}
else
# スクリプトの処理状況を示すメッセージを表示します。
echo "moving *.${filetype} to ${CATEGORY}"
# ファイルが存在しない場合に備え、エラーメッセージは非表示にします(>/dev/null)。
# これによりmvコマンドはサイレントに動作します。
mv ${DESKTOP}/*.${filetype} ${DESKTOP}/${CATEGORY} 2> /dev/null
fi
count=`expr $count + 1`
done
done < cleanup.csv

このスクリプトを応用すれば、ダウンロードフォルダやドキュメントフォルダの整理にも使えます。CSVのカテゴリ定義を変更するだけで、自分好みの整理ルールを簡単に実現できるので、ぜひ試してみてください。

  1. Windows 10の「Your Phone」アプリの使い方!スマホとPCを連携させる完全ガイド

    スマホで撮った写真をパソコンに移すのに苦労していませんか?別のデバイスでファイルを使うために、自分宛てにメールで送ったり、USBケーブルで接続したりしていませんか?実は、Windows 10の最新機能「Your Phone(スマホ同期)」アプリを使えば、こうした手間のかかる作業からすべて解放されます。Your Phoneアプリは、PCとスマートフォンを行き来するストレスからあなたを自由にしてくれる便利なツールです。PCで作業中にスマホの写真へアクセスできないのは、作業効率を大きく下げる要因になりがちです。 Microsoftはこの機能を1年以上にわたりWindows Insiderプログラムで

  2. Windows 7のプロダクトキーを使ってWindows 10へアップグレードする方法

    Windows 7は、MicrosoftがリリースしたOSの中でも最も成功した製品の一つであり、後継のWindows 8が登場した後も長期間にわたって愛用され続けました。個人ユーザーから企業ユーザーまで、Windows 7は「フラッグシップOS」として高く評価され、Microsoftがサポート終了を決定した後も多くの環境で使い続けられてきました。しかし、そろそろWindows 7からWindows 10へのアップグレードを検討すべきタイミングです。その理由は数多くあります。 現在、Windows 7は完全にサポート終了の時期を迎えています。Microsoftは2014年にWindows 7の