複数のファイルを複数のディレクトリにパーセントで移動する

複数のファイルを複数のディレクトリにパーセントで移動する

ファイルを含むディレクトリがあります100,000。これらは3つの異なるディレクトリに移動するために必要なオーディオファイルですtrain。 、の順にそれぞれを押します。devtest80%10%10%

mv `ls | head -500` ./subfolder1/

デフォルトの数はわかっていますが、ファイルの総数の割合がわからない場合は、ファイルを移動します。ディレクトリを3つに分けるよりきれいな方法があるかどうか疑問に思います。

ベストアンサー1

ls出力を入力として使用するのは一般的に良い考えではありません。

小さなスクリプトで欲しいものを手に入れることができます。

#! /bin/sh
# file counter 
cnt=0

# for each file (replace *.* by *.mp3 to restrict to some files)
for i in *.*
do 
    # create a number for 0 to 9 from the counter
    a=$(( cnt%10 ))

    # for 8 files on 10,
    if [ $a -lt 8 ]
    then
        # move file to train folder (think to remove `echo`)
        echo mv "$i" train/

    # for one file on 10 (a is 8)
    elif [ $a -lt 9 ]
    then
        # move file to dev folder (think to remove `echo`)
        echo mv "$i" dev/

    # for one file on 10 (a is 9)
    else
        # move file to test folder (think to remove `echo`)
        echo mv "$i" test/
    fi 
    # and update the counter
    cnt=$((cnt+1))
done

おすすめ記事