目次AutoHotkeyAppleScriptShellScriptJavaScript・CSSlinuxBeanTips太閤立志伝Vその他うp普通に日記
どんなに経験が豊富でも、人のために知識を出し惜しむなら門外漢と変わらない。
--.--.-- --
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2013.06.24 Mon

昔のiPodやMicroSDなどに音楽を突っ込んで聞いていると、
番号順ではなくFAT32のインデックス順に再生されてしまいイラッとする事がある。

Windowsであれば「FolderSort」というフリーソフトを使って簡単にソートできるのだが、
Linuxではそうもいかない。それ系のアプリがどれもこれも貧弱で使い物にならないのだ。

手動で一々並べ替えるのも大変面倒なので、
例によって例の如くシェルスクリプトでサクッと解決してやる事にしよう。


使い方

  1. 以下のシェルスクリプトをテキストエディタにコピペし、「foldersort」として保存する
    #!/bin/bash
    
    # 指定されたフォルダを変数に格納
    rel="$1"
    
    # 親フォルダの指定がなかった場合は終了
    if [ "a${rel}" = "a" ] ; then
    	echo フォルダを指定してください。
    	echo 例: foldersort /mnt/sdb1
    	exit 1
    fi
    
    # 親フォルダが存在しなかった場合も終了
    if [ ! -d "${rel}" ]; then
    	echo フォルダが存在しません。
    	exit 1
    fi
    
    # 区切り文字を改行に
    _IFS="$IFS";IFS="
    "
    
    # 親フォルダの絶対パスを取得
    abs=$(cd $(dirname "${rel}") && pwd)/$(basename "${rel}")
    
    # 親フォルダへ移動
    cd "${abs}"
    
    # 子フォルダをリストアップして順番に処理
    for i in `find . -type d | tail -n +2 | LANG=C sort -f -n` ; do
    	
    #	# 子フォルダに移動
    	cd "${i}"
    	echo ${i}
    	
    #	# 一時フォルダを作成
    	mkdir ./_sorttmp_
    	mv * ./_sorttmp_/ 2> /dev/null
    	cd ./_sorttmp_
    	
    #	# ファイル名をリストアップして順番に移動させる
    	for j in `ls -1 -v` ; do
    		mv "${j}" ../
    		echo ${j}
    	done
    	echo ----------
    	
    #	# 一時フォルダを削除
    	cd ../
    	rmdir ./_sorttmp_
    	
    #	# 親フォルダに戻る
    	cd "$abs"
    	
    done
    
    # 区切り文字を戻す
    IFS="$_IFS"
    
    
  2. スクリプトファイルに実行権限を付与する(プロパティで操作するか「chmod +x」を実行)
  3. ターミナルから「foldersort /mnt/sdb1」という具合にソートさせたいフォルダを指定する
  4. (゚Д゚)ウマー
スポンサーサイト
テーマ:Linux - ジャンル:コンピュータ
ShellScript    Comment(0)  TrackBack(0)   Top↑
Template by まるぼろらいと
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。