我在同一目录中有 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