Criando um script que organiza bateria [fechado]

0

Eu gostaria de criar um script que procure em um diretório especificado, obtenha uma palavra-chave (ou seja, 'kick', 'snare') e copie todos os arquivos .wav relacionados em um diretório separado.

Eu gostaria, então, de agrupar os arquivos .wav em sub-diretórios contendo 128 arquivos .wav por subdiretório para quantos forem necessários.

A pasta que estou pesquisando é / Users / bot / Documents / _Sound \ Library

Até agora eu criei:

localizar / Usuários / bot / Documents / _Sound \ Library -iname 'chutar? .wav'

eu coloquei o? para as pastas que podem ser chamadas de 'kickz' ou 'kicks'

    
por bot 16.08.2017 / 03:09

1 resposta

1

Eu joguei um script rápido para fazer o que você está pedindo. Salve-o em um arquivo como sort.sh e, em seguida, execute-o como ./sort.sh kick ou ./sort.sh snare (termo de pesquisa do espaço no arquivo). Ele encontrará arquivos com base no valor que você passou e, em seguida, criará diretórios numerados como kick_1 e kick_2 etc. Além disso, ele deixará um arquivo de índice em cada diretório com todos os nomes de arquivos, se desejar. Espero que ajude!

#!/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
    
por 16.08.2017 / 07:47