체계적인 드럼을 생성하는 스크립트 [닫기]

체계적인 드럼을 생성하는 스크립트 [닫기]

지정된 디렉토리를 찾고 키워드(예: "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 kick또는 (파일공간 검색어)와 같이 ./sort.sh snare실행합니다 . 전달한 값을 기반으로 파일을 찾은 다음 번호가 매겨진 디렉터리 kick_1등을 만듭니다. kick_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

관련 정보