如何将指定前缀文件打包为单个Zip并移动至目标目录(修正脚本问题)
问题与解决方案
问题背景
在/tmp/movies目录下有以下文件:
- GOT1.mp4
- GOT2.mp4
- BREAKINGBD1.mp4
需要实现:
- 将所有含
GOT的文件打包为单个GOT.zip - 把这个压缩包移动到
/tmp/movies/GameOT目录 - 原目录仅保留
BREAKINGBD1.mp4
现有脚本会生成多个独立Zip文件,且未处理原文件,脚本如下:
LIST_OF_FILES=*GOT* TARGET_DIRECTORY=/tmp for filename in $LIST_OF_FILES; do zip_filename=$filename.zip zip $zip_filename $filename mv $zip_filename $TARGET_DIRECTORY done
修改后的脚本
# 定义目标目录路径 TARGET_DIR="/tmp/movies/GameOT" # 确保目标目录存在,不存在则创建 mkdir -p "$TARGET_DIR" # 一次性将所有含GOT的文件打包到目标目录的GOT.zip中 zip "$TARGET_DIR/GOT.zip" *GOT* # 删除原目录下所有含GOT的文件 rm -f *GOT*
关键说明
mkdir -p "$TARGET_DIR":-p参数保证即使GameOT的父目录不存在也能创建,避免因目录不存在导致后续操作失败zip "$TARGET_DIR/GOT.zip" *GOT*:直接指定压缩包输出路径,同时批量添加所有匹配*GOT*的文件,生成单个压缩包,替代原脚本循环生成多个压缩包的逻辑rm -f *GOT*:强制删除原目录下所有含GOT的文件,确保仅保留BREAKINGBD1.mp4
内容的提问来源于stack exchange,提问作者Unkown112 Sha
相关产品推荐
相关产品推荐

