저는 Ubuntu 18.04 LTS를 사용하고 있으며 한 폴더에서 다른 폴더로 파일을 복사하고 싶고, 폴더1에서 폴더2로 복사된 각 파일의 파일 경로를 공백을 구분 기호로 사용하여 세 번째 파일에 저장하려고 합니다.
참고: cp 명령은 출력을 반환하지 않으므로 파일에 저장하면 작동하지 않습니다.
터미널을 통해 실행할 수 있는 명령이나 스크립트의 조합을 사용할 수 있습니다.
다른 소프트웨어를 제안하지 마십시오.
답변1
POSIX 명령을 사용하고 파일 및 디렉터리 이름에 개행 문자가 포함되어 있지 않다고 가정합니다.
src=/some/dir
dst=/some/other/dir
file_list=/path/to/list.txt
(cd -P -- "$src" && find . |
tee -- "$file_list" |
pax -rwdpe -- "$dst")
$src
경로는 또는 디렉토리 에 상대적입니다 $dst
(기존에 존재해야 함).
GNU 구현 cp
(Ubuntu에서 볼 수 있듯이)에는 -v
자신이 수행하는 작업을 알려주는 옵션이 있습니다.
LC_ALL=C cp -va -- "$src" "$dst" > "$file_list"
다음을 포함하는 콘텐츠를 생성합니다 list.txt
.
'/some/dir' -> '/some/other/dir'
'/some/dir/file' -> '/some/other/dir/file'
[...]
또 다른 옵션은 다음을 사용하는 것입니다(표준 명령은 아니지만 Ubuntu는 tar
기본적으로 GNU와 함께 제공됩니다).tar
(cd -P -- "$src" && tar cf - .) |
(cd -P -- "$dst" && tar xvf - > "$file_list")
답변2
find
및 를 조합하여 에서 cpio
으로 모든 파일과 하위 폴더를 반복적으로 복사할 수 있습니다 . 중간 에는 모든 파일 이름( 에 상대적인 ) 을 쓸 수 있습니다 .folder1
folder2
tee
folder1
outputfile
cd folder1 && find . -depth | tee outputfile | cpio -pdm folder2
소스 폴더를 기준으로 파일 이름을 가져오려면 이 명령이 cd folder1
필요합니다 .cpio
folder2
절대 또는 상대 로 지정해야 합니다 folder1
.
파일만 복사하려면 find
다음 명령을 수정하면 됩니다.
... find . -type f -maxdepth 1 ...