ファイルとディレクトリ操作の応用|ターミナル作業を効率化|UNIX Cafe

当ページのリンクには広告が含まれています。
ファイルとディレクトリ操作の応用|ターミナル作業を効率化

UNIX Cafe | 第12回

スクリプトで整理整頓!カフェのバックヤードを片づけよう

目次

はじめに|ファイルの山をどうする?

ミナちゃん

ユニ先生〜、パソコンの中がごちゃごちゃです💦
書類フォルダに同じ名前のファイルがいっぱいあって、
どれが最新なのかもう分からなくなっちゃいました。

ユニ先生

ふふっ、それは“カフェの倉庫が片づいてない”のと同じだね。
今日は「探す」「移動する」「整理する」をスクリプトでやってみよう。
カフェのバックヤードをスッキリさせる気分でね。

find コマンドで探す

ミナちゃん

まずはどんなファイルがあるか、見つけるところからですね。

ユニ先生

そう。 find は“探すプロ”なんだ。
日付や種類を指定して、欲しいファイルを見つけてくれる。

3日以上前に更新されたファイルを探す

bash
$ find ~/Documents -type f -mtime +3
ミナちゃん

あっ、出てきました! 
古いファイルがこんなにあるなんて…まるで“在庫過多カフェ”ですね💦

ユニ先生

ふふっ、まずは現状を知ることが整理の第一歩だよ。

mv と cp でお引っ越し

ミナちゃん

次はこの古いファイル、どうしたらいいんですか?

ユニ先生

mv コマンドを使えば“お引っ越し”できるよ。
find と組み合わせれば、自動で整理整頓だ。

まずコピーで試す

bash
$ find ~/Documents -type f -mtime +3 -exec cp {} ~/backup/ \;

cp -n は、同名ファイルがあっても上書きしません。
コピーなので元のファイルは残ります

確認だけする(dry-run)

bash
$ find ~/Documents -type f -mtime +3 -print

実際に移動する前に対象ファイルだけ一覧表示して確認すると安全です。

ミナちゃん

いきなりmvで移動すると必要なファイルまでbackupされるかも?
なので、まずはcpでファイルの内容を確かめます。

ユニ先生

mvで移動すると、元々どこにあったファイルかわからなくなるからね!

if文で「なければ作る」

ミナちゃん

でも先生、もし backup フォルダがなかったらどうなりますか?💦

ユニ先生

いい質問だね。それを防ぐのが “if文”。
「もしなければ作る」って書けば、ちゃんと気を利かせてくれる。

bash
$ if [ ! -d ~/backup ]; then
    mkdir ~/backup
    echo "backupフォルダを作成しました!"
fi
ミナちゃん

わぁ〜! ほんとに“気が利くスクリプト”ですね。
これならエラーにもならないし、安心です。

ユニ先生

そうだね。
UNIXのスクリプトは、指示を少し丁寧に書くだけで、
本当に“賢いアシスタント”になるんだよ。

Try it!|自動お片づけスクリプトを作ってみよう

安全な範囲を指定してファイルを移動する

#!/bin/bash
if [ ! -d ~/backup ]; then
    mkdir ~/backup
fi

find ~/Documents -type f -mtime +3 -exec mv {} ~/backup/ \;

echo "☕ 古いファイルを backup に移動しました!"

「ホームフォルダの中の Documents フォルダ」にあるユーザーが作成したファイルが対象になります。

ミナちゃん

これで「掃除スクリプト」完成ですね!
実行したら本当にスッキリして、気分も軽くなりました。

ユニ先生

よくできたね。
こうして毎日の整理をスクリプトに任せれば、
作業も気持ちもスッキリ整うんだ。

コーヒーブレイク:ユニ先生のひとこと

スクリプトの片づけはね、掃除というより“整える”仕事なんだ。
整ったフォルダには、新しいアイデアがちゃんと入ってくるんだよ。

ページのまとめ

  • find :条件をつけてファイルを探す
  • mv :ファイルを移動する
  • cp :ファイルをコピーする
  • if [ ! -d ] :フォルダがなければ作る
ミナちゃん

今日は“片づけ上手なスクリプト”を作れてうれしいです。
これなら放っておいても、フォルダが整頓されますね!

ユニ先生

ふふっ、スクリプトで片づけるとね、
机の上だけじゃなく、心の中までスッキリするんだ。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次