파일을 복사하고 쉘 스크립트를 사용하여 확인 및 압축합니다.

파일을 복사하고 쉘 스크립트를 사용하여 확인 및 압축합니다.

나는 다음을 생성하고 폴더에서 복사된 파일을 확인할 수 있도록 Linux 또는 Python 스크립트와 같은 스크립트를 생성하고 싶습니다.

두 개의 폴더가 있습니다.

폴더 A에는 300개의 .xls 파일이 있습니다. 이 폴더에는 현재 폴더 B에 있는 일부 파일이 없습니다.

FolderB에는 500개의 .xls 파일이 있습니다.

선택한 100개의 파일을 B 폴더에서 A 폴더로 복사하고 싶습니다. 그런 다음 현재 폴더 A(B에서 100개의 파일을 복사한 후 400이 되어야 함)에 있는 모든 파일이 폴더 B에도 있는지 확인하도록 스크립트를 원합니다.

그런 다음 스크립트가 이러한 모든 파일을 개별적으로 자체 bzip2 파일로 압축하기를 원합니다. 기본적으로 프로세스가 완료되면 400개의 bzip2 파일(각 Excel당 하나씩)이 생성됩니다.

답변1

스크립트는 해당 폴더에서 압축할 파일을 자동으로 구별하는 방법을 어떻게 알 수 있습니까? 특정 명명 규칙이 있나요? 그렇지 않은 경우 압축하려는 파일을 폴더 A와 폴더 B에서 폴더 C로 병합해야 할 수도 있습니다. 다음 스크립트는 각 파일을 압축합니다. 원본 .xls 파일을 유지하지 않으려면 삭제하세요.-k

#/bin/bash
files="/path/to/files"
for f in $files; do
    bzip2 -k $f
done

답변2

누락된 100개의 파일을 어떻게 선택하려는지 명확하지 않습니다. 이렇게 하면 100개가 무작위로 선택됩니다(처음 100개의 누락된 파일만 선택하려는 경우 제거 --shuf).

a=folderA
b=folderB
# copy 100 files from folderB
parallel --shuf -j1 --halt now,success=100 [ ! -f $a/{/} ] '&&' cp {} $a/{/} ::: $b/*
# Verify all files in folderA is in folderB
parallel [ ! -f $b/{/} ] '&&' echo {} is in $a but not in $b ::: $a/*
# bzip2 them all
parallel bzip2 ::: $a/*

bzip2GNU Parallel은 주로 CPU별 스레드를 실행할 수 있도록 설계되었습니다 .

관련 정보