измените * .foo на * .bar в unix однострочном

Я пытаюсь преобразовать все файлы в данном каталоге с суффиксом ".foo" в файлы, содержащие такое же базовое имя, но с суффиксом, измененным на ".bar".Я могу сделать это с помощью сценария оболочки и цикла for, но я хочу написать однострочник, который достигнет той же цели.Задача:Ввод: * .fooВыход: * .barВот что я попробовал:Это близко, но неверно.Результаты:Ввод: * .fooВывод: * .foo.barЛюбые идеи о том, почему данный суффикс не распознается по базовому имени?Кавычки вокруг ".foo" не являются обязательными, и результаты такие же, если они опущены.
4 голоса | спросил user001 19 PM000000100000005731 2011, 22:20:57

6 ответов


0
Хотя ---- +: = 0 =: + ---- может работать с расширениями файлов, проще использовать функции расширения параметров оболочки:Ваш код с ---- +: = 2 =: + ---- не работает, потому что ---- +: = 3 =: + ---- запускается только один раз, а затем xargs просто видит ---- +: = 4 =: + ---- каждый раз.
ответил evil otto 19 PM000000100000004231 2011, 22:30:42
0
для файла в * .foo;do mv $ file ---- +: = 0 =: + ---- ;сделанныйПример:
ответил hari 19 PM000000100000000131 2011, 22:26:01
0
для х в $ (найти. -name "* .foo");do mv $ x $ {x %% foo} bar;сделанный
ответил Steve B. 19 PM000000100000003731 2011, 22:30:37
0
Удалите ---- +: = 1 =: + ----, когда будете готовы.
ответил Maxim Egorushkin 19 PM000000100000003631 2011, 22:31:36
0
Если вы установили ---- +: = 0 =: + ---- , вы можете сделать,
ответил glglgl 19 PM000000110000005031 2011, 23:10:50
0
Почему бы вам не использовать «переименовать» вместо сценариев или циклов.RHEL: ---- +: = 0 =: + ----Debian: ---- +: = 1 =: + ----
ответил Kidzor 7 +04002014-10-07T08:17:48+04:00312014bEurope/MoscowTue, 07 Oct 2014 08:17:48 +0400 2014, 08:17:48

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132