基于文件格式与中间后缀过滤并删除文件的Bash脚本实现
Bash脚本:按格式与中间后缀筛选并删除压缩文件
匹配逻辑说明
针对你给出的.gz压缩文件结构,筛选规则如下:
- 当
midfix为空时:匹配无中间后缀的目标格式文件,即[文件名].[格式].gz(如file1.txt.gz) - 当指定
midfix时:匹配包含指定中间后缀的目标格式文件,即[文件名].[midfix].[格式].gz(如file2.abc.txt.gz)
示例代码
# 1. 配置参数:根据需求修改 PARENT_DIR="parent_dir" # 父目录路径 FORMAT="txt" # 目标格式(如txt、csv) MIDFIX="" # 中间后缀,空值表示无中间后缀,可改为"abc"、"xyz"等 # 2. 根据参数构造匹配模式 if [ -z "$MIDFIX" ]; then # 无中间后缀的匹配规则 PATTERN="*.$FORMAT.gz" else # 带指定中间后缀的匹配规则 PATTERN="*.$MIDFIX.$FORMAT.gz" fi # 3. 先预览匹配到的文件(安全操作:先确认再删除) echo "=== 匹配到的文件列表 ===" find "$PARENT_DIR" -type f -name "$PATTERN" # 4. 执行删除操作(带确认提示,避免误删) read -p "是否删除以上文件?(输入y/Y确认,其他取消): " CONFIRM if [[ "$CONFIRM" =~ ^[Yy]$ ]]; then find "$PARENT_DIR" -type f -name "$PATTERN" -delete echo "删除完成" else echo "已取消删除操作" fi
具体场景测试
- 当
FORMAT="txt"且MIDFIX=""时,会匹配并删除parent_dir/subdir0/subdir1/file1.txt.gz - 当
FORMAT="txt"且MIDFIX="abc"时,会匹配并删除parent_dir/subdir0/subdir1/file2.abc.txt.gz - 当
FORMAT="csv"且MIDFIX="xyz"时,会匹配并删除parent_dir/subdir0/subdir1/file3.xyz.csv.gz
内容的提问来源于stack exchange,提问作者piks
相关产品推荐
相关产品推荐

