ファイルを含むディレクトリがあります100,000
。これらは3つの異なるディレクトリに移動するために必要なオーディオファイルですtrain
。 、の順にそれぞれを押します。dev
test
80%
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