如何使用 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

相关内容