파일을 열고 나열된 파일을 다른 폴더에 복사하십시오.

파일을 열고 나열된 파일을 다른 폴더에 복사하십시오.

다음과 같은 파일 이름이 포함된 파일이 있습니다 file1.txt.

filea.txt
fileb.txt
filec.txt

file1.txt나열된 파일을 다른 폴더에 복사하고 싶습니다 . 어떤 UNIX 명령이 사용됩니까? (쉘은 ksh88관련이 있습니다).

답변1

귀하의 형식에서는 파일 이름에 개행 문자가 없다고 가정하는데, 이는 이상적이지 않습니다(파일 이름에 개행 문자가 허용됩니다). 당신은 또한 당신의 껍질에 대해 언급하지 않았습니다. 그러나 POSIX 셸에서는 다음을 수행할 수 있습니다.

while IFS= read -r file; do
    cp -- "$file" new_dir/
done < file

그러나 bash에서는 모든 항목을 한 번에 cp에 전달하는 것이 더 빠를 수 있습니다(아래에 있는 한 ARG_MAX).

files=()

while IFS= read -r file; do
    files+=( "$file" )
done < file

cp -- "${files[@]}" new_dir/

...또는 bash4+가 있는 경우에도 마찬가지입니다.

mapfile -t files < file
cp -- "${files[@]}" new_dir/

답변2

GNU 도구 사용:

xargs -rd '\n' cp -t /dest/folder -- < file1.txt

POSIX적으로:

sed 's/./\\&/g' < file1.txt | xargs sh -c 'exec cp -- "$@" /dest/dir' sh

관련 정보