小さなファイルを優先してファイルを移動できますか?


0

サイズ順にファイルを移動することはできますか?

好む:

mv /path/to/x /path/to/y

xとyはディレクトリです。ただし、小さいファイルが最初に移動されます。または最初に大きなファイル。

また、これをしない理由はありますか?


1
些細なことではありません。これ行う理由はありますか?
ダニエルアンダーソン

回答:


1

このようにすることができます(未テスト):

for file in `ls --sort=size /path/to/x/*`; do mv $file /path/to/y/; done

lsに--reverseパラメーターを追加することにより、ソートを逆にすることができます。ファイル名にスペースが含まれている場合は、$ fileを引用符で囲む必要があります。

... mv "$file" /path/to/y/ ...

ファイル名に二重引用符が含まれる場合は、実際に問題が発生しています。

また、以下が機能する可能性もありますが、mvの実装に依存し、非常に多くのファイルで機能しない可能性があります(ファイル名のスペースや引用符に問題があります)。

mv `ls --sort=size /path/to/x/*` /path/to/y/

あなたは尋ねる:「これをしない理由はありますか?」質問を逆にする必要があります。これを行う理由はありますか?理由がある場合は、先に進んでください。


1

単一のファイルシステム内でファイルを移動する場合、ファイルのデータは移動されません。ファイル名のみがディレクトリ間で移動されます。したがって、10ギガバイトのファイルを即座に(単一のファイルシステム内で)移動できます。したがって、最小のファイルを最初に移動できるようにすべてのファイルのサイズを見つけるのに苦労することは、時間の無駄です(この場合)。


0

そうしない理由は、移動する前にすべてのファイルのインデックスを作成する必要があるためです。次に、それらすべてのファイルのサイズを取得し、並べ替えます。コピーを開始する前に

そして、コピープロセスの前に計算した状態がコピープロセス中にまったく同じであるという保証はないため、無意味になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.