Две связанные замены в одной командной строке?

Это отлично работает:

ls /path/{foo,bar}/ 

Теперь, если я хочу эффективно сделать:

 cp /path/foo/bunch/of/stuff/foo.txt /path/bar/bunch/of/stuff/bar.txt 

Есть несколько коротких рук, которые я могу сделать в одной командной строке?

Т.е. вроде cp /path/{foo,bar}/file.txt но где есть две замены, которые необходимо выполнить одновременно?

Фактически, я хочу, чтобы множественные связанные расширения фигурных скобок не приводили к появлению всех возможных комбинаций.

2 Solutions collect form web for “Две связанные замены в одной командной строке?”

Подстановка может включать / :

 cp /path/{foo/foo,bar/bar}.txt 

эквивалентно

 cp /path/foo/foo.txt /path/bar/bar.txt 

Альтернативный подход заключается в поиске и замене; это работает до тех пор, пока «foo» не содержит слэшей:

 set /path/foo/bunch/of/stuff/foo.txt; cp $1 ${1//foo/bar} 

Один из способов – использовать взаимодействие с историей , но для текущей строки ( !# ):

 $ echo /path/foo/bunch/of/stuff/foo.txt !#:1:gs/foo/bar/ echo /path/foo/bunch/of/stuff/foo.txt /path/bar/bunch/of/stuff/bar.txt 
  • !# , как уже говорилось, относится к текущей строке
  • :1 к первому слову
  • :s/foo/bar заменяет bar для foo
  • g является модификатором, который делает замену по всей линии
  • Как пропустить подкаталоги в цикле for, основанном только на имени?
  • «Неожиданный конец файла», возвращенный из скрипта BASH
  • Проблема с использованием головы для удаления последней строки файла
  • Быстрый способ удаления файлов с строками меньше x
  • bash добавить путь для обработки некоторых файлов
  • Переносимость $ BASHPID
  • Что означает PROG = $ {0 ## * /} в сценарии bash?
  • Как назвать файл на самом глубоком уровне дерева каталогов
  • Испытание, если целые ряды строго возрастают
  • Выбор Баша: оператор и зарезервированное слово
  • Места в Bash, где сопоставление образцов выполняется с помощью регулярных выражений?
  • Interesting Posts

    Как удалить повторяющиеся строки в большом текстовом файле с несколькими GB?

    почему btmp не показывает имя пользователя для входа в систему?

    более чем размер диска

    Нужна помощь в обработке текстового файла с awk для соответствия формату файлов CSV

    Перенаправить все ARP-трафик с eth0 на eth1

    Как распознать, какая виртуальная среда используется

    ls показывает временную метку без времени для файла на NFS

    Использование wpa_supplicant для выбора точки доступа

    Сохраните AWK FNR как переменную Bash, чтобы продолжить поиск из строки

    как сделать изменения брандмауэра постоянными через firewall-cmd?

    Пользователь selinux добавляет постепенное замедление

    Передача подстановочного символа * в скрипт (bash?)

    Почему меню или элемент по правому клику не могут быть настроены с помощью menu.xml?

    GCC: установить архитектуру для перехода к компоновщику

    Файл cat1 в файл2 после определенного соответствия шаблону

    Linux и Unix - лучшая ОС в мире.