같은 디렉토리에 5가지 유형의 파일이 있습니다. 그런 다음 동일한 디렉터리에 있는 모든 파일을 분할하고 분할 파일 이름을 동적으로 지정해야 합니다(원본 파일 이름 + 추가 확장자). (K_MOSTLY*, L_MOSTLY*, M_MOSTLY*, IPBAR*)와 같은 파일 이름. 하지만 첫 번째 일치하는 파일만 분할할 수 있고 두 번째 일치하는 파일은 분할할 수 없습니다.
for entry in /path/ ;
do
split -b 700K K_MOSTLY* -d --additional-suffix K_MOSTLY*
split -b 700K L_MOSTLY* -d --additional-suffix L_MOSTLY*
split -b 700K M_MOSTLY* -d --additional-suffix M_MOSTLY*
split -l22000 IPBAR -d --additional-suffix IPBARCODES*
rm K_MOSTLY*
rm L_MOSTLY*
rm M_MOSTLY*
rm IPBARCODES*
done
답변1
@Kusalananda가 말했듯이 모든 것이 페이지에 있고 man
구문이 잘못되었습니다.
즉, 질문이 명확하지 않지만 이러한 요구 사항을 수용하기 위해 접두사( ${f%.*}
및 IPBAR
)와 접미사( .${f##*.}
)를 수정하면 뭔가 효과가 있을 것입니다. 대상 파일 이름의 경로를 완전하게 유지하도록 주의하십시오.
p="./split/"
for f in ${p}[K-M]_MOSTLY* ${p}IPBARCODES*; do
case "$f" in
*IPBARCODES*)
split -l 2200 -d "$f" "${p}IPBAR" --additional-suffix=".${f##*.}"
;;
*[K-M]_MOSTLY*)
split -b 700 -d "$f" "${f%.*}" --additional-suffix=".${f##*.}"
;;
esac
rm "$f"
done;
이것이 필요하다
Banana.xml
IPBARCODES.xml
K_MOSTLY.xml
L_MOSTLY.xml
M_MOSTLY.xml
그리고 주어진
Banana.xml
IPBAR00.xml
IPBAR01.xml
K_MOSTLY00.xml
K_MOSTLY01.xml
L_MOSTLY00.xml
L_MOSTLY01.xml
M_MOSTLY00.xml
M_MOSTLY01.xml