심볼릭 링크와 파일 이름 목록을 사용하여 대상 파일을 복사하는 방법

심볼릭 링크와 파일 이름 목록을 사용하여 대상 파일을 복사하는 방법

많은 파일을 복사하고 싶습니다. 나는 그들의 위치를 ​​txt 파일의 줄과 같은 이름을 가진 일련의 심볼릭 링크로 저장합니다. 그래서 저는 cp를 사용하고 readlink와 cat/pipe 기능을 결합해야 합니다. 이 조합과 관련된 다른 질문을 본 적이 없습니다.

주문하다:

cp $(readlink < /path/list.txt) -t /path/targetdir

다음과 같이 readlink에 대한 인수에 심볼릭 링크 이름을 명시적으로 사용했다면 더 간단한 예가 작동할 것입니다(그러나 이 작업을 수동으로 수행하기에는 파일 이름이 너무 많습니다).

cp $(readlink symlink1 symlink2) -t /path/targetdir

문제는 "readlink"와 파이프를 결합하는 방법이지만 무엇인지 모르겠습니다.

편집: 다음은 list.txt 파일의 첫 번째 줄 내용에 대한 예입니다.

symlink_13243

symlink_39184

symlink_83204

각 행은 고유한 기호 링크 이름입니다.

답변1

GNU를 사용 xargs하고 다음을 수행하십시오 readlink.

</path/list.txt xargs -d'\n' readlink -z | xargs -0 cp -t /path/targetdir

에서 줄당 하나의 심볼릭 링크를 사용하여 첫 번째 심볼릭 링크의 구분 기호로 list.txt개행 문자( )를 선택 하고 출력을 다른 심볼릭 링크로 파이프합니다. 이번에는 null 문자를 사용하여 경로( 및 )를 종료합니다.\nxargsreadlinkxargs-z-0

답변2

대신 루프를 사용하여 cp -L작동합니다 readlink. 심볼릭 링크가 포함된 폴더에서 다음 명령을 실행했습니다.

for item in $(cat /path/dir/list.txt); do cp -L $item /path/targetdir; done

또한 txt 파일 인코딩에 문제가 있습니다(R에서 빌드하지만 Windows 시스템에서 빌드하는 것과 관련됨).

관련 정보