if else 또는 for 루프 조건을 사용하여 동일한 디렉터리에서 일치하는 파일 패턴 파일을 분할하는 방법은 무엇입니까?

if else 또는 for 루프 조건을 사용하여 동일한 디렉터리에서 일치하는 파일 패턴 파일을 분할하는 방법은 무엇입니까?

같은 디렉토리에 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

관련 정보