Это решение было протестировано на /bin /bash из системы GNU /Linux. Я предполагаю, что на вашем компьютере для этого есть /bin /bash, а также awk, tr, grep, ls, rm и wc. (/bin /bash является исполняемым файлом оболочки по умолчанию). Этот скрипт также предполагает, что у вас есть ТОЛЬКО файлы mp3 и m4a, и что некоторые каталоги не содержат файлов mp3 и m4a. (написал это на
Опять же, это предполагает, что Mac имеет bash, tr, grep, ls, rm и wc (стандартные утилиты UNIX, iirc)
(извините за плохие сценарии, я не очень хорош в сценариях оболочки)
(каталог = папка)
(Укажите каталог назначения, используя ПЕРВЫЙ АРГУМЕНТ) (т.е. ./thisscript.sh имя_каталога)
(прежде чем сделать это, прочитайте весь пост)
Создайте текстовый файл в родительском каталоге всех этих каталогов с музыкой в нем и вставьте его в:http://pastebin.com/HcAvWtG0 Теперь перейдите к этому каталогу в оболочке и введите:
bash <filename>
Обратите внимание, что вы не можете сделать что-то сложное, как это без сценария. ;)
Прогуливаясь через это:
#!/bin/bash
Говорит нам использовать /bin /bash, оболочку.
todir=$1
Разобрать первый аргумент как каталог назначения и сохранить его в $ todir (переменная).
cd $( dirname $0 )
Просто чтобы сделать вещи безопасными, чтобы мы могли выполнить сценарий из любого каталога, если сценарий находится в том же каталоге, что и все каталоги музыкальных файлов.
DIRLIST=$( ls -F | grep '/' | tr -d '/' )
Список каталогов.
for DIR in $DIRLIST
do
Итерация по каталогам.
mp3num=$( ls $DIR | grep -c \\.mp3 )
m4anum=$( ls $DIR | grep -c \\.m4a )
filnum=$( ls $DIR | wc -l )
Сохраните некоторые переменные, которые нам нужны (количество mp3, количество m4a, количество файлов
echo $DIR $mp3num $mp4num $filnum
(только для отладки)
if [ $DIR = $todir ]; then
continue
fi
Если каталог, на который мы смотрим на текущей итерации, пропустите его.
if [ $m4anum = 0 -o $mp3num = 0 ]
then
continue
Если в каталоге нет ни m4a, ни mp3, пропустите его.
elif [ $mp3num != 0 -a $m4anum != 0 ]
then
mv $DIR/*.mp3 $todir
Если в каталоге есть несколько mp3-файлов и несколько m4a, то переместите все mp3-файлы из каталога в указанную папку назначения.
fi
done
Были сделаны.
Причина, по которой это, вероятно, будет работать и на macs, заключается в том, что macs основан на Unix. У них также есть bash, язык оболочки, который мы здесь используем, и все эти маленькие утилиты Unix (я посмотрел их, и они появились как первый результат в Mac Manpages).
Кроме того, убедитесь, что каталог назначения существует, или он не будет работать ...