많은 파일을 복사하고 싶습니다. 나는 그들의 위치를 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 문자를 사용하여 경로( 및 )를 종료합니다.\n
xargs
readlink
xargs
-z
-0
답변2
대신 루프를 사용하여 cp -L
작동합니다 readlink
. 심볼릭 링크가 포함된 폴더에서 다음 명령을 실행했습니다.
for item in $(cat /path/dir/list.txt); do cp -L $item /path/targetdir; done
또한 txt 파일 인코딩에 문제가 있습니다(R에서 빌드하지만 Windows 시스템에서 빌드하는 것과 관련됨).