Не уверенный в переключателях командной строки к neroAacEnc, но чему-то вроде этого:
% cd
% find . -type f -name '*.wav' -exec sh -c '
orgfile="$0"
newfile="$(echo "$0" | sed 's/.wav/.aac/')"
neroAacEnc $orgfile $newfile
' {} \;
Или Вы могли использовать ffmpeg, чтобы сделать (непротестированное) преобразование:
% cd
% find . -type f -name '*.wav' -exec sh -c '
orgfile="$0"
newfile="$(echo "$0" | sed 's/.wav/.aac/')"
ffmpeg -i $orgfile -ab 256 $newfile
' {} \;
#!/bin/bash
# myscript.bash
cd
find . -type f -name '*.wav' -exec sh -c '
orgfile="$0"
newfile="$(echo "$0" | sed 's/.wav/.aac/')"
neroAacEnc -2pass -q 1 -if $orgfile -of $newfile
' {} \;
После создания файла (myscript.bash) делают это исполняемым файлом chmod +x myscript.bash
, выполните его ./myscript.bash
, и Вы сделаны.
-FFmpeg и AAC, кодирующий руководство
Примечание: Существуют дополнительные "рецепты" для преобразования .wav к .aac и получению различных качеств, характеристик, и т.д.
cd
принимает во внимание только первый аргумент, игнорируя все остальные. Ни одна из опций не влияет на эхо предыдущего патнамента (возможно, документированный -@
действительно имеет такой эффект, но это недействительная опция в моей системе).
Если вы не хотите использовать псевдоним/функцию, которая может дать вам еще меньше символов для ввода, чем cd -
, или перенаправить на /dev/null
, я предлагаю начать использовать специальное тильдовое расширение в bash
:
cd ~-
Из bash
man page:
Если тильда-префикс - это `~-', то подставляется значение переменной оболочки OLDPWD, если она установлена.
Похоже, что это еще одна область в bash
, где было создано некое особое значение. Тильдовое расширение обычно работает на $DIRSTACK, манипулируется/инвестируется с помощью pushd
, popd
, и dirs
, оно может быть использовано и в других командах (cp ~-/somefile .
) и если вы использовали pushd
, вы можете использовать ~N
(где N - это количество оттесненных уровней), чтобы добраться до этих каталогов (для cd
или других команд).
BTW, если вы имеете учетные записи на нескольких машинах и предполагаете, что вы используете ssh для входа на них из одного места, вам следует подумать о добавлении к вашему ~/.bashrc
:
if [ -f ~/.bash_common ]; then
. ~/.bash_common
fi
и затем иметь скрипт на вашей рабочей машине, который использует scp
для "нажатия" bash_common
на каждой из этих машин. Таким образом, вы можете добавлять и совместно использовать общую функциональность на нескольких машинах с минимальными накладными расходами.