ls | 예 |

ls | 예 |

즉시 파일 세트를 삭제하고 싶습니다.

ls | egrep \^New

출력은 예상대로입니다.

New 1
New 2
New 3

하지만 파이프라인을 계속 진행

| xargs -L rm

공백으로 구분된 입력을 제거해 보세요.

rm: New: No such file or directory
rm: 1: No such file or directory

내가 무엇을 놓치고 있나요?

답변1

파싱되지 않음ls.이것은 트릭을 수행해야 합니다:

rm New*

xargs인수가 기본적으로 공백으로 분할되어 , 등에서 작동하기 때문에 rm방법 이 실패합니다 . 개행 문자를 분할하여 이 문제를 해결할 수 있지만 개행 문자가 포함된 파일 이름에는 작동하지 않습니다.New1New2

답변2

예, 맞습니다. xargs파일 이름을 공백으로 나누면 됩니다. GNU를 사용하는 경우 xargs이 옵션을 사용하여 개행 문자를 구분 기호로 사용할 수 있습니다 -d. 예:

ls | egrep \^New | xargs -d '\n' rm

관련 정보