xargs 및 cp: find 스타일 "{}+" 다중 확장?

xargs 및 cp: find 스타일 "{}+" 다중 확장?

파일 그룹을 대상 폴더에 복사하고 싶습니다. 그러나 cp각 작업에 대해 새 인스턴스를 생성할 필요가 없습니다 .

인수 형식은 cp다음과 같습니다.

cp src_file1 src_file2 src_file3 dest_dir/

소스 파일 이름이 한 줄씩 나열된 파일이 있다고 가정하면 어떻게 할 수 있습니까?

파일 수가 매우 많기 때문에 아래 @Scott의 아이디어는 최대 명령줄 길이에 도달하므로 작동하지 않습니다.

나는 어떻게든 그 파일 이름을 파이프로 연결하여 cp그 일을 하게 하고 싶습니다. xargs또한 명령줄 끝에 확장을 추가하려고 하기 때문에 도움이 되지 않는 것 같습니다.

이것이 가능합니까?

감사합니다

답변1

filelist다음을 포함하는 경우

apple
orange
banana

여기서 해당 디렉터리에 복사하려는 파일 이름은 다음 fruity과 같습니다.

cp `cat filelist` fruity

/결국에는 필요하지 않습니다 .

경고: 파일 이름에 공백이 포함된 경우(예: passion fruit.

답변2

print0찾기 시뮬레이션 :

cat filelist |perl -p -e 's/\n/\000/' |xargs -0 cp --target-directory dest_dir/

이 샘플 xargs -0에는--target-directory

관련 정보