Добавьте эти настройки к Вашему .bashrc
:
shopt -s extglob globstar
extglob
включает некоторые дополнительные шаблоны, включая @(…)
создайте для разъединения. globstar
включает **/
который пересекает каталоги рекурсивно.
Затем Вы не должны использовать find
:
sed -i "$replace" mydirectory/**/*.@(txt|read|po)
В zsh Вы не нуждаетесь ни в какой специальной опции, просто работаете
sed -i $replace mydirectory/**/*.(txt|read|po)
Если у Вас есть много файлов, можно видеть, что сообщение как “предел длины командной строки превысило”. Но предел очень высок в современных системах Linux, Вы вряд ли встретитесь с ним.
echo ${FILENAME_ARGS} | grep -e - | sort >options
echo ${FILENAME_ARGS} | grep -v -e - >files
В Вашей обуви я записал бы сценарий, который берет все Ваши аргументы и назначает им переменными, затем выполнитесь | очень | долго | канал с переменными аргумента, которым заглядывают в случае необходимости, т.е.
$ ./wrapper.sh -a firstoption -b secondoption -c thirdoption
$ cat wrapper.sh
#!/bin/bash
#trap variables with case statement here
for arg in "$@" ; do
case "$arg" in
-a)
alpha=$2
shift
;;
-b)
bravo=$2
shift
;;
-c)
charlie=$2
shift
;;
esac
done
# at this point: $alpha=firstoption
# $bravo=secondoption
# $charlie=thirdoption
echo "Better grab a coffee man, this could take a while...."
echo "STUFF" | some $alpha $bravo | big -c $bravo -Z $charlie | pipeline -yx $charlie $alpha $bravo| sort -N $charlie -options | etc.${bravo}.${alpha} >temp.${charlie}