if elseまたはforループ条件を使用して、同じディレクトリに一致するファイルパターンファイルを分割する方法は?

if elseまたはforループ条件を使用して、同じディレクトリに一致するファイルパターンファイルを分割する方法は?

同じディレクトリに5種類のファイルがあります。次に、同じディレクトリにあるすべてのファイルを分割し、分割ファイル名を動的に指定する必要があります(元のファイル名+追加の拡張子)。 (K_MOSTLY*、L_MOSTLY*、M_MOSTLY*、IPBAR*)などのファイル名。ただし、最初の一致ファイルのみを分割でき、2番目の一致ファイルは分割できません。

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

おすすめ記事