파이프와 접촉하여 사용

파이프와 접촉하여 사용

touch파이프 명령을 사용하여 명령 출력을 기반으로 여러 파일을 생성할 수 있기를 원합니다 .

예를 들어:

grep "hello(.*)" file.txt | touch

하지만 작동하지 않습니다! 이 목표를 어떻게 달성할 수 있나요?

답변1

명령 touch자체는 읽을 수 없지만 stdin다음 명령을 사용하면 읽을 수 있습니다 xargs.

grep "hello(.*)" file.txt | xargs -I file_name touch file_name

편집하다:

입력에 백슬래시( )로 끝나는 줄이 xargs포함되어 있으면 \이름에 개행 문자가 포함된 파일이 생성됩니다. 질문은 이 경우 예상되는 결과가 무엇인지 지정하지 않습니다.

예: 입력

foo\
bar

명령에 옵션을 추가하면 두 개의 파일 을 생성하도록 동작이 변경 됩니다 foo\nbar.-d '\n'xargsfoo\bar

답변2

이 시도,

# ~ grep "hello(.*)" file.txt | xargs touch

추가 참고자료:man xargs

관련 정보