3

Я хочу сделать что-то вроде участия подстановочного совпадения и использовать его аналогично регулярному выражению. Команда может выглядеть примерно так

cat foo_* | python magic.py > magic_*

Если мои имена файлов

   foo_biz
   foo_baz

Я хочу, чтобы вывод был в файлах с именем

   magic_biz
   magic_baz

эффективно изменяя имена файлов с foo_* на magic_* .

Возможно ли сделать это в команде оболочки? Я использую bash , но ответ для других оболочек тоже подойдет.

3 ответа3

5

Если я понимаю, что вы пытаетесь сделать, вы можете сделать это, но это займет немного больше работы:

for f in foo_*; do python magic.py <"$f" >"${f/foo/magic}"; done

(Примечание: я также заменил бесполезное использование cat на < redirect.)

1

Что-то немного отличное от отличного ответа Гордона:

foos=(foo_*)
suffixes=(${foos[@]#foo_})
for sfx in "${suffixes[@]}"; do
    python magic.py < "foo_$sfx"  > "magic_$sfx"
done
0
$ touch foo_{biz,baz}

$ ls foo_*
foo_baz  foo_biz

$ printf "%s\n" foo_* | sed 's/^foo_/magic_/'
magic_baz
magic_biz

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .