Преобразование всех файлов .ape в .flac в разных подпапках

Я использую ваш сервер за маршрутизатором (home / NAT)? Если это так, все, что вам нужно, это передать порт 80 на ваш компьютер на маршрутизаторе. Вы можете найти, как это сделать на portforward.com

По умолчанию Apache удаленно доступен, если нет активного брандмауэра.

1
задан 9 November 2014 в 20:54

3 ответа

Ниже приведен скрипт (python) ниже. Скопируйте его в пустой файл, сохраните его как convert.py, установите каталог в файлы в разделе главы скрипта (convert_dir =) и запустите его командой:

python3 /path/to/convert.py

script

#!/usr/bin/env python3

convert_dir = "/path/to/folder/tobeconverted"

import os
import subprocess

for root, dirs, files in os.walk(convert_dir):
    for name in files:
        if name.endswith(".ape"):
            # filepath+name
            file = root+"/"+name
            # to use in other (convert) commands: replace the "avconv -i" by your command, and;
            # replace (".ape", ".flac") by the input / output extensions of your conversion
            command = "avconv -i"+" "+file+" "+file.replace(".ape", ".flac")
            subprocess.Popen(["/bin/bash", "-c", command])
        else:
            pass
1
ответ дан 24 May 2018 в 02:02
  • 1
    спасибо за ваш ответ и ваше время Джейкоба. Однако, если это возможно, я бы хотел использовать только команду оболочки в одной строке без использования скрипта (извините за это, я должен был указать это раньше) – tigerjack89 9 November 2014 в 13:50
  • 2
    @ tigerjack89 Ну, может, кто-то может использовать его в подобных ситуациях; синтаксис & lt; command & gt; & Lt; входной_файл & GT; & Lt; выходной_файл & GT; довольно распространено. – Jacob Vlijm 9 November 2014 в 14:13

Теперь, когда ffmpeg является предпочтительным по сравнению с avconv снова, и есть дешевые многие основные компьютеры (60 долларов США для 8-ядерного XU4), я использую следующее, чтобы быть наиболее эффективным:

#!/bin/bash

#
# ape2flac.sh
#

function f2m(){
        FILE=$(echo "$1" | perl -p -e 's/.ape$//g');
        if [ ! -f "$FILE".flac ] ; then
                ffmpeg -v quiet -i "$FILE.ape" "$FILE.flac"
        fi
}
export -f f2m
find "$FOLDER" -name '*.ape' | xargs -I {} -P $(nproc) bash -c 'f2m "$@"' _ "{}"
0
ответ дан 24 May 2018 в 02:02

, которую вы искали: команда find -type f -name "*.ape" -print0 | xargs -0 avconv -i find будет содержать только файлы, заканчивающиеся на .ape, команда find даст относительный путь к команде avconv, чтобы она могла конвертировать эти файлы и сохранять их в той же папке, что и входной файл (т.е. .ape). Команда find найдет все файлы в этом каталоге, независимо от того, насколько глубоко они хранятся в подкаталоге

-1
ответ дан 24 May 2018 в 02:02
  • 1
    Это не сработает; avconv не может принимать входные файлы из STDIN. – evilsoup 9 November 2014 в 15:44
  • 2
    как насчет выходной папки? – tigerjack89 9 November 2014 в 15:45
  • 3
    @evilsoup Я обновил ответ, xargs может решить проблему. пожалуйста, попробуйте это. – edward torvalds 14 November 2014 в 23:05

Другие вопросы по тегам:

Похожие вопросы: