Привет, у меня была такая же проблема, и вы можете сделать это, чтобы сделать восстановление из загрузки, и перейдите в оболочку и введите:
linux64
grub-install
update-grub2
, а затем перезагрузитесь, и это может работа хорошо этот способ.
Включить рекурсивное переключение в подкаталоги:
shopt -s globstar
Тогда вы могли бы сделать:
for f in **/*.m4a
do
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "$PWD/${f%.m4a}.mkv"
done > bulk.command.txt
printf 's %q цитирует строки так, чтобы они могли безопасно использовать в качестве ввода оболочки, поэтому вам не нужно возиться с кавычками:
%q quote the argument in a way that can be reused as shell input
Если вы сделаете этот сценарий, вы можете использовать аргументы, чтобы решить, следует ли использовать другой каталог для выходные файлы:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
${foo:-bar} использует значение переменной foo, если оно не пустое или bar в противном случае, поэтому в этом случае он использует первый аргумент, если не empty и $PWD в противном случае.
В этом случае вам потребуется воссоздать структуру каталогов, что можно сделать с помощью mkdir -p:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
printf 'mkdir -p %q\n' "${1:-$PWD}/${f%/*}"
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
Вот если вы действительно необходимо создать сценарий для последующего использования. Лично я не вижу смысла - вы можете просто запустить цикл напрямую, когда вам действительно нужно его запустить:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
mkdir -p "${1:-$PWD}/${f%/*}"
ffmpeg -i "$PWD/$f" -c:a copy "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
Включить рекурсивное переключение в подкаталоги:
shopt -s globstar
Тогда вы могли бы сделать:
for f in **/*.m4a
do
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "$PWD/${f%.m4a}.mkv"
done > bulk.command.txt
printf 's %q цитирует строки так, чтобы они могли безопасно использовать в качестве ввода оболочки, поэтому вам не нужно возиться с кавычками:
%q quote the argument in a way that can be reused as shell input
Если вы сделаете этот сценарий, вы можете использовать аргументы, чтобы решить, следует ли использовать другой каталог для выходные файлы:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
${foo:-bar} использует значение переменной foo, если оно не пустое или bar в противном случае, поэтому в этом случае он использует первый аргумент, если не empty и $PWD в противном случае.
В этом случае вам потребуется воссоздать структуру каталогов, что можно сделать с помощью mkdir -p:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
printf 'mkdir -p %q\n' "${1:-$PWD}/${f%/*}"
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
Вот если вы действительно необходимо создать сценарий для последующего использования. Лично я не вижу смысла - вы можете просто запустить цикл напрямую, когда вам действительно нужно его запустить:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
mkdir -p "${1:-$PWD}/${f%/*}"
ffmpeg -i "$PWD/$f" -c:a copy "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
Включить рекурсивное переключение в подкаталоги:
shopt -s globstar
Тогда вы могли бы сделать:
for f in **/*.m4a
do
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "$PWD/${f%.m4a}.mkv"
done > bulk.command.txt
printf 's %q цитирует строки так, чтобы они могли безопасно использовать в качестве ввода оболочки, поэтому вам не нужно возиться с кавычками:
%q quote the argument in a way that can be reused as shell input
Если вы сделаете этот сценарий, вы можете использовать аргументы, чтобы решить, следует ли использовать другой каталог для выходные файлы:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
${foo:-bar} использует значение переменной foo, если оно не пустое или bar в противном случае, поэтому в этом случае он использует первый аргумент, если не empty и $PWD в противном случае.
В этом случае вам потребуется воссоздать структуру каталогов, что можно сделать с помощью mkdir -p:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
printf 'mkdir -p %q\n' "${1:-$PWD}/${f%/*}"
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
Вот если вы действительно необходимо создать сценарий для последующего использования. Лично я не вижу смысла - вы можете просто запустить цикл напрямую, когда вам действительно нужно его запустить:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
mkdir -p "${1:-$PWD}/${f%/*}"
ffmpeg -i "$PWD/$f" -c:a copy "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
Включить рекурсивное переключение в подкаталоги:
shopt -s globstar
Тогда вы могли бы сделать:
for f in **/*.m4a
do
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "$PWD/${f%.m4a}.mkv"
done > bulk.command.txt
printf 's %q цитирует строки так, чтобы они могли безопасно использовать в качестве ввода оболочки, поэтому вам не нужно возиться с кавычками:
%q quote the argument in a way that can be reused as shell input
Если вы сделаете этот сценарий, вы можете использовать аргументы, чтобы решить, следует ли использовать другой каталог для выходные файлы:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
${foo:-bar} использует значение переменной foo, если оно не пустое или bar в противном случае, поэтому в этом случае он использует первый аргумент, если не empty и $PWD в противном случае.
В этом случае вам нужно будет воссоздать структуру каталогов, что можно сделать с помощью mkdir -p:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
printf 'mkdir -p %q\n' "${1:-$PWD}/${f%/*}"
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
Вот если вы действительно необходимо создать сценарий для последующего использования. Лично я не вижу смысла - вы можете просто запустить цикл напрямую, когда вам действительно нужно его запустить:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
mkdir -p "${1:-$PWD}/${f%/*}"
ffmpeg -i "$PWD/$f" -c:a copy "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
Включить рекурсивное глобусирование для рекурсии в подкаталоги:
shopt -s globstar
Тогда вы могли бы сделать:
for f in **/*.m4a
do
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "$PWD/${f%.m4a}.mkv"
done > bulk.command.txt
printf
's %q
цитирует строки так, чтобы они могли безопасно использовать в качестве ввода оболочки, поэтому вам не нужно возиться с кавычками:
%q quote the argument in a way that can be reused as shell input
Если вы сделаете это сценарием, вы можете использовать аргументы, чтобы решить, следует ли использовать другой каталог для выходные файлы:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
${foo:-bar}
использует значение переменной foo
, если оно не пустое, или bar
в противном случае, поэтому в этом случае он использует первый аргумент, если не empty и $PWD
в противном случае.
Вам нужно будет воссоздать структуру каталогов в этом случае, что можно сделать с помощью mkdir -p
:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
printf 'mkdir -p %q\n' "${1:-$PWD}/${f%/*}"
printf 'ffmpeg -i %q -c:a copy %q\n' "$PWD/$f" "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt
Вот если вы действительно необходимо создать сценарий для последующего использования. Лично я не вижу смысла - вы можете просто запустить цикл напрямую, когда вам действительно нужно его запустить:
#! /bin/bash
shopt -s globstar
for f in **/*.m4a
do
mkdir -p "${1:-$PWD}/${f%/*}"
ffmpeg -i "$PWD/$f" -c:a copy "${1:-$PWD}/${f%.m4a}.mkv"
done > bulk.command.txt