创建组织鼓的脚本

创建组织鼓的脚本

我想创建一个脚本,它在指定的目录中查找,接受关键字(即“kick”、“snare”)并将所有相关的 .wav 文件复制到单独的目录中。

然后,我希望它将 .wav 文件分组到子目录中,每个子目录包含 128 个 .wav 文件,数量不限。

我正在搜索的文件夹是 /Users/bot/Documents/_Sound\ Library

到目前为止我已经想出了:

找到 /Users/bot/Documents/_Sound\ Library -iname 'kick?.wav'

我把?对于可能被称为“kickz”或“kicks”的文件夹

答案1

我编写了一个快速的 bash 脚本,希望能够满足您的要求。将其保存到文件中sort.sh,然后像./sort.sh kickor ./sort.sh snare(文件空间搜索术语)一样执行它。它将根据您传入的值查找文件,然后创建编号目录等kick_1kick_2此外,如果您愿意,它还会在每个目录中留下一个包含所有文件名的索引文件。

#!/bin/bash

declare -i numFiles
declare -i numDirs
mkdir ./temp

## Find files and copy to ./temp directory
find -E  /Users/bot/Documents/_Sound\ Library -regex ".*($1).*" -exec cp {} ./temp/ \;

## Get total number of files found and divide by 128 (+1 to allow for the final directory)
numFiles=`ls ./temp | wc -l`
numDirs=$numFiles/128+1

## All the file moving and directory naming
for i in $(seq 1 $numDirs); do
        mkdir $1_$i;
        ls ./temp/ |head -128 > $1_$i/$1_$i.index
                for x in `cat $1_$i/$1_$i.index`; do mv ./temp/$x $1_$i; done

        ## Uncomment if you want to remove the index file
        #rm $1_$i/$1_$i.index
done

## Remove temp directory
rm -rf ./temp

相关内容