web-dev-qa-db-ja.com

ファイルシステム上のファイルを並べ替える

私のMP3プレーヤーは、ファイルシステムに配置された順序でファイルを再生します。今ではノーチラスはファイルをランダムな順序でコピーするようですので、オーディオブックまたは何かを聞くとき、すべての章をランダムな順序で取得します。適切なものを見つけるためにあなたのポケットから。 mc(Midnight Commander)を使用する場合、ほとんどのファイルはアルファベット順でコピーであり、それが実現したい方法です。

そこに...

  • nautilusにファイルとフォルダーをアルファベット順にコピーするように指示する方法はありますか?
  • ファイルシステム上で直接アルファベット順でファイルとフォルダーをソートできるプログラム

追加情報:

3
RobinJ

Enzotibによる回答を装飾するため。これらのプレーヤーは、ファイルアロケーションテーブル(FAT、FAT)で見つかった順にファイルを再生します。

したがって、FATSortはこの問題の潜在的な解決策の1つです。上記の警告には2つの理由があります。

  • ツールは、ベアメタルレベルでファイルアロケーションテーブルを編集します。
    • ディレクトリテーブルの範囲内でファイルエントリを移動するため、破損したファイルシステムは以前よりも破損します。
    • ファイルシステムがfsck.vfatチェックに合格する限り、問題ありません。
  • 著者は、自分のコードを安全にするために十分な時間を割いていないと感じているようです
    • 潜在的に、FATSortアプリケーションでバッファオーバーランまたは同様の問題を引き起こす(破損した)ファイルアロケーションテーブルを作成できます。
    • 現実には、これはありそうにない-それはニッチアプリケーションのようなものであり、攻撃者が特別に細工されたファイルシステムをMP3プレーヤーに配置する機会は限られています。最初の後
    • 繰り返しますが、ファイルシステムがfsck.vfat(またはWindowsのディスクチェック)に合格した場合、大丈夫です-これは著者によるベルトアンドブレース免責事項です

palimpsest /ディスクユーティリティには、GUIからディスクチェックを行うオプションがあります。

FATをソートする他のプログラムは、ここで見ることができます: http://www.murraymoffatt.com/software-problem-0010.html

代替ソリューション;

再生順序でファイルをコピーする

最も単純で最も明白なのは、ファイルを再生したい順番でプレーヤーにコピーすることです。 Nautilusは、明らかに同じ順序でファイルをプレーヤーファイルシステムにコピーします。ほとんど同じ理由で、iNodeがディスクに配置された順序でファイルを操作する傾向があります。

トラックファイル名の先頭にトラック番号がある場合、これが理想的です。ほとんどのコマンドラインツールは、辞書式順序でソートします。ご指摘のとおり、Midnight Commanderなどのツールもこれを行います。

# Find the files in the source     | copy them to the target folder
# Note we use the          -print0 |       -0   args because media file names
# commonly contain spaces

find /path/to/music/folder -print0 | xargs -0 cp -t /path/to/target/folder

プレイリストを作成する

一部のプレーヤーはプレイリストファイルをサポートしています。これらのプレイリストの生成をサポートするために、MP3プレーヤーファイルシステムにスクリプトを保持しています。私のプレーヤーは、特定のバイナリプレイリスト形式のiRiverデバイスです。プレーヤーが.m3uプレイリストをサポートしている場合、形式は非常にシンプルで、コメント化されたメタデータとテキストファイルのパスのみで構成されます。私はRhythmboxでプレイリストを作成し、それらをiRiver形式に変換していました。 Bansheeを使用して作成する機会はまだありません(トレーニング目的でのみ作成しており、トレーニングは非常に予測可能です...)

6
Adrian

探しているユーティリティは存在し、 FATSort です。

Ubuntuリポジトリのfatsortパッケージに含まれています。

4
enzotib

プレーヤーがファイルの変更時間を使用している可能性があります。次のようなpythonスクリプトを使用してフォルダー内のすべてのファイルを取得し、touchで最終アクセス時刻を変更できます。プレーヤーがなければ、テストできません原因の結果。

import os
import sys
path = sys.argv[1]
thefiles = os.listdir(path)
thefiles.sort()
for fname in thefiles:
    os.utime(os.path.join(path, fname), None)

このスクリプトは、次のようにプレーヤーフォルダーで実行する必要があります(「path_to_the_player_folder」を実際のパスに置き換えます)(touch_all.pyとして保存した場合):python touch_all.py "path_to_the_player_folder"

Nautilusにファイルをコピーする方法を伝える方法についてはわかりません。ただし、質問のその部分に答える人もいるかもしれません。

1
xubuntix

fatsortに関しては、次のように使用します。

Sudo umount /dev/sdxxxx
fatsort /dev/sdxxx

あなたはそれが実際にどのような開発者であるかを理解する必要があります-sda、sdbなどです.

Sudo fdisk -l 

マウントされたシステムが表示されます。

0
drewid