Версия ответа Питера "найти", чтобы не получать поддиректории, но фактически выполнять все преобразования, выглядит так:
convert_if_no_mp4 () { wav_file=${1} mp4_file="${wav_file%.wav}.mp4" if [[ ! -e ${mp4_file} ]]; then ffmpeg -i "$wav_file" -c:a libfdk_aac -b:a 96k "$mp4_file" fi } export -f convert_if_no_mp4 dir=~/MUSIC find ${dir} -type f -name "*.wav" -exec bash -c 'convert_if_no_mp4 "{}"' \;
Я подозреваю, что это то, что вы на самом деле хотите (фактически выполнить преобразование), но если вы действительно хотите работать со всеми поддиректориями по какой-то причине, вы можете начать с чего-то вроде этого:
do_stuff_with_subdir () { echo "doing something with \"${1}\"" } export -f do_stuff_with_subdir dir=~/MUSIC find ${dir} -type d -exec bash -c 'do_stuff_with_subdir "{}"' \;
/root/tunnel.sh: line 2: ip: command not found
Ваш корневой профиль входа (один из профилей ~/.bash _, ~/.bash _логин или ~/.profile )устанавливает $PATH
на включить /usr/sbin, в то время как ваш (не -сценарий входа )не устанавливает $PATH
для включения /usr/sbin.
Либо разверните $PATH
в своем скрипте, либо используйте полные пути к программам, которые находятся в /usr/sbin.
PATH=$PATH:/usr/sbin
или
/usr/sbin/ip...