同じディレクトリに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