ファイルを拡張子ごとにサブフォルダーに仕分ける

LINEで送る
Pocket

共有フォルダー、~/ダウンロード、~/ドキュメント フォルダーにファイルをどんどん置いて行くと何のファイルがあるのか分からなくなり整理が大変になります。せめて拡張子毎にディレクトリを作成して、自動で振り分けてみるスクリプトを作成してみました。

extension.sh

#/bin/bash

# 実行ファイル名(extension.sh) を取得
BASH_NAME=`basename $0`
# 実行したディレクトリのファイルリストを取得する。
for file in * ; do
	# 実行ファイルは振り分け対象から除外する
	if [ "${file}" = "${BASH_NAME}" ]; then
		continue;
	fi
	# ファイルかどうかチェックする。
	if [ -f "${file}" ]; then
		# ファイル名から拡張子を取得する
		extension=`echo "${file}" |sed 's/^.*\.\([^\.]*\)$/\1/'`
		# 拡張子の文字列を大文字に変換して既にディレクトリが
		# 存在するかチェックして無ければディレクトリを作成する。
		# sample.txt -> txt -> TXT
		if [ ! -d "${extension^^}" ]; then
			mkdir "${extension^^}"
		fi
		# ファイルをディレクトリに移動する
		mv "${file}" "${extension^^}"
	fi
done

実行例

# ディレクトリの中身を確認する
$ ls
extension.sh  sample.docx  sample.jpg  sample.pdf  sample.png
# スクリプトを実行する
$ ./extension.sh
# ディレクトリの中身を確認すると、拡張子名のディレクトリが作成されている
$ ls
DOCX  JPG  PDF  PNG  extension.sh
# ディレクトリ配下のファイルリスト表示して、振り分けられているのを確認する。
$ find
.
./JPG
./JPG/sample.jpg
./extension.sh
./PDF
./PDF/sample.pdf
./PNG
./PNG/sample.png
./DOCX
./DOCX/sample.docx
LINEで送る
Pocket

  • このエントリーをはてなブックマークに追加

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください