텍스트 파일 목록의 Linux cp 특정 파일도 텍스트 목록의 하위 디렉터리에 있습니까?

텍스트 파일 목록의 Linux cp 특정 파일도 텍스트 목록의 하위 디렉터리에 있습니까?

제가 막혔기 때문에 문제를 해결하기 위해 여러분의 도움을 요청합니다. 상황을 설명하겠습니다. txt 파일에 경로가 있는 파일을 두 번째 파일에 지정된 특정 하위 디렉터리에 복사하고 싶습니다(또한 다음 두 열을 포함하는 완전한 csv 파일도 있습니다: 하위 디렉터리 이름( $value1), 파일 경로 ( $value2))

다음 명령을 사용하여 하위 디렉터리를 자동으로 만들 수 있었습니다.

xargs mkdir -p </scripts/repertoires.csv

다음 명령을 사용하여 모든 파일을 단일 디렉터리에 복사하는 방법을 알고 있습니다.

cat /scripts/fichiers.csv | xargs -I% cp% / destinationfolder

$value2하지만 그에 맞는 하위 디렉토리의 파일에 해당하는 각 줄을 복사할 수는 없습니다. 더 명확하게 하기 위해 /destination 폴더/에 복사하고 싶습니다.$value1

답변1

과거에 제가 했던 방식은 tar중개인으로 사용하는 것이었습니다. 하지만 이보다 더 우아한 다른 답변이 있을 것이라고 확신합니다.

특정 기준 IE를 충족하는 파일 목록이 있는 경우:1M보다 작은 /usr의 모든 파일

$ find /usr -type f -size -1M

우리는 해당 위치에 복사하고 싶습니다 /mnt/dst.

tar를 벡터로 사용하여 데이터를 압축/압축 해제할 수 있습니다. 즉

$ find /usr -type f -size -1M | tar --files-from=- -c | tar -xv -C /mnt/dst

첫 번째 는 파일에 대한 전체 경로의 한 줄씩 목록을 예상하고 stdout에 대한 tarball을 생성하는 를 tar사용합니다 .--files-from

두 번째는 파이프에서 받은 타르볼을 tar사용하여 대상 경로로 전환 하고 압축을 푼다.-C

결과는 다음과 같습니다( -v두 번째 tar 명령에서 사용하는 경우).

usr/lib/grub/i386-pc/fdt.lst
usr/lib/python3.6/site-packages/pip/_vendor/html5lib/filters/__init__.py
usr/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/__init__.py
usr/lib/python3.6/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py
usr/lib/python3.6/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py
usr/lib/python3.6/site-packages/pip/operations/__init__.py
usr/lib/python3.6/site-packages/pkg_resources/_vendor/__init__.py
usr/lib/python3.6/site-packages/setuptools/_vendor/__init__.py
usr/lib/python3.6/site-packages/slip/__init__.py
usr/lib/python3.6/site-packages/slip/_wrappers/__init__.py
usr/lib/python3.6/site-packages/asn1crypto/_perf/__init__.py
...
...

결과 대상 디렉토리는 당신이 찾고 있는 것이어야 하는 (가독성을 위해 정리된) 트리를 생성합니다.

# tree -L 3 /mnt/dst
/mnt/dst
└── usr
    ├── lib
    │   ├── grub
    │   ├── node_modules
    │   └── python3.6
    ├── lib64
    │   └── python3.6
    ├── local
    │   └── share
    └── share
        ├── crypto-policies
        ├── doc
        ├── groff
        ├── microcode_ctl
        ├── mime
        ├── pki
        ├── texlive
        ├── texmf
        ├── vim
        └── X11

20 directories, 0 files

관련 정보