이것은 훌륭하게 작동합니다:
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
, 동시에 수행되어야 하는 두 가지 교체는 어디에 있습니까?
실제로 여러 개의 결합된 중괄호 확장을 원하지만 가능한 모든 조합이 생성되지는 않습니다.
답변1
교체에는 다음이 포함될 수 있습니다 /
.
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}
답변2
한 가지 방법은 다음과 같습니다.역사적 상호작용, 그러나 현재 행( !#
)의 경우:
$ 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
전체 라인을 대체할 수 있는 수정자입니다.