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'
xargs
foo\
bar
답변2
이 시도,
# ~ grep "hello(.*)" file.txt | xargs touch
추가 참고자료:man xargs