분할을 사용한 스크립팅 [닫기]

분할을 사용한 스크립팅 [닫기]

1,000KB보다 큰 디렉토리에서 PDF 파일만 분할하는 쉘 스크립트를 어떻게 작성합니까? pdftk 또는 기타 다운로드 가능한 도구를 사용하지 않음

PDF를 바이트 단위로 분할하고 싶습니다. 제가 다운로드 가능한 도구를 사용하는 것을 반대하는 이유는 동료들이 어떤 종류의 다운로드도 허용하지 않는다는 점을 분명히 했기 때문입니다.

답변1

mkdir split-files
find . -maxdepth 1 -type f -size +10000000c -exec split -b 10000000 {} split-files/{}. ';'

현재 디렉터리에서 10000000바이트(1000KB)보다 큰 파일을 찾습니다. 각 부분이 1000KB를 초과하지 않도록 이러한 파일을 분할합니다. 분할은 바이트 경계에서 발생합니다.

split-files분할 파일은 원본 파일과 동일한 이름과 두 글자 접미사를 추가하여 새 디렉터리에 저장됩니다 .

원본 파일은 변경되지 않은 상태로 유지됩니다.

답변2

다음 명령은 현재 디렉터리에서 1000KB( )보다 큰 모든 파일을 찾습니다 ..

find . -type f -size +1000k

|결과를 각 파일로 보내고 다음 보다 큰 모든 파일을 나열하는 등의 xargs명령을 실행할 수 있습니다 .
1000KB

find . -type f -size +1000k | xargs ls -l

명령을 실행하려면 split위의 명령을 사용자의 명령으로 바꿔야 합니다.ls -lssplit

답변3

분할 명령을 사용하여 여러 부분으로 분할합니다. 이렇게 하면 소스 파일에서 선택한 치수로 부품이 생성됩니다.

split --bytes=1000K MyBigFile.jpg filepart

다음 부분은 귀하의 이름으로 시작하는 임의의 이름이 됩니다.

이 파일은 다음과 같습니다:

filepartazza
filepartczaa
filepartqqzs

다음과 같이 쉽게 결합할 수 있습니다.

cat filepart* >NewBigPicture.png

나는 디렉터리의 모든 파일을 검색하여 하위 디렉터리로 분할하는 완전한 스크립트를 작성했습니다.

스크립트의 매개변수: "파일이 있는 폴더" "K 단위의 일치하는 크기" "하위 디렉터리 및 섹션의 이름"

불러라:./script.sh "/media/exchange/" "1000" "Parts"

#!/bin/bash

SplitFiles() {

    File=""
    PartFolder=""
    IFS=$'\n'

        for File in `ls -lh --block-size=K $Folder | grep -v /`
        do
            Filename=$(echo $File | awk '{ print $1="";$2="";$3="";$4="";$5="";$6="";$7="";$8=""; print $0 }')
            Filename=$(echo $Filename | awk '{$1=$1};1')
            Filezise=$(echo $File | awk '{ print $5 }' | tr -d K)

            if [[ -z "$Filezise" || "$Filezise" -lt "$MatchSize" ]]; then
                :
            else
                PartFolder="$Folder""$Partname""Folder"
                mkdir -p "$PartFolder"
                split --bytes=1000K $Folder$Filename $PartFolder/$Partname                                                      
            fi
        done    
}

Folder="$1"
MatchSize="$2"
Partname="$3"

SplitFiles "$Folder" "$MatchSize" "$Partname"

하위 디렉토리를 생성 /media/exchange/Parts하고 그 안에 모든 부품을 저장합니다.

관련 정보