Использование bash для циклического перемещения по файлам в каталоге, а затем создания подкаталога на основе имени файла - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь использовать bash для

1) cycle through files in a directory 
2) then create a sub-directory based on the file names 
3) then split mp3 files using ffmpeg in 3 second increments.

. Я могу создать подкаталоги, и код ffmpeg разбивает файлы, используя правильные имена.Кажется, у меня проблема в петле.Он создает каталог split-chirp и все его файлы, но не обрабатывает файл pink.mp3 .См. Изображение ниже начального каталога Start directory

См. Изображение конечного каталога Ending directory

Не создаетсякаталог split-pink и все файлы (я знаю, что это проблема зацикливания, просто не могу понять, почему)

Я запускаю код с помощью команды bash mp3spl.sh *.mp3

Кодниже

#!/bin/bash
currentdir=$(pwd) #get current directory

for f in $currentdir/*.mp3
do

fn=`echo "$1" | cut -d'.' -f1` #get just the filename no extension
splitdirname="$currentdir/split-$fn"  #sub directory with correct names 
mkdir -p "$splitdirname" #make split directory
echo "Processing $f"
ffmpeg -i "$1" 2> tmp.txt

    ffmpeg -i "$1" -f segment -segment_time 3 -ar 22050 -ac 1 "$splitdirname/$fn-%03d.mp3"

#rm tmp.txt

done

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Это будет работать с пробелами в каталогах и именах файлов

#!/bin/bash
#run using bash mp3spl.sh
currentdir="$(pwd)" #get current directory


for f in *.mp3   #only look for mp3 files
do

fn=$(basename "$f" | cut -d'.' -f1) #get just the filename no extension

splitdirname="$currentdir/split-$fn" #sub directory with correct names
mkdir -p "$splitdirname" #make split directory
#echo "Processing $f"
ffmpeg -i "$1" 2> tmp.txt

ffmpeg -i "$f" -f segment -segment_time 1200 -ar 22050 -ac 1 "$splitdirname/%03d-$fn.mp3" #split every 20mins

#rm tmp.txt

done
0 голосов
/ 05 декабря 2018

$1 не требуется, потому что вы хотите перебрать все mp3-файлы.

fn=$(basename "$f" | cut -d'.' -f1) #get just the filename no extension

Я оставил все остальное нетронутым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...