나는 주문을 기대한다
ls -d doc/* | grep -P "<some_pattern>" | xargs bash -ic echo
다음을 수행하십시오.
ls -d doc/* | grep -P "<some_pattern>" | xargs echo
ls -d doc/* | grep -P "<some_pattern>"
즉, 개행 대신 공백으로만 구분된 일치하는 파일을 제공합니다 .
하지만 출력으로 개행 문자만 얻습니다.
왜 이런거야? 원하는 작업을 수행하도록 첫 번째 명령을 수정하려면 어떻게 해야 합니까?
zsh
그런데 실제로는 대신 사용하고 있지만 bash
둘 다 작동하지 않습니다.
실제로 "grep"에 지정된 패턴과 일치하는 파일 이름을 가진 여러 파일을 인쇄하고 .zshrc
-aliased 명령을 사용하여 인쇄해야 하는 경우 이 기능이 필요합니다.
답변1
Bash 맨페이지에서
-c string If the -c option is present, then commands are read from
string. If there are arguments after the string, they are
assigned to the positional parameters, starting with $0.
그래서...
$ echo a b c d e f g | xargs bash -ic echo
$ echo a b c d e f g | xargs bash -ic 'echo $0 $@'
a b c d e f g