You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Bash脚本实现文件查找与移动操作?

用Bash脚本实现文件查找、压缩与移动操作

先纠正你命令里的几个问题:

  1. 不要用$PATH作为搜索路径:$PATH是系统环境变量,用来存储命令的查找路径,自定义路径请用其他变量名(比如SEARCH_PATH),避免覆盖系统变量导致命令无法执行。
  2. 拼写错误:第二个命令里的-exem是笔误,正确参数是-exec。
  3. 两次扫描目录的冗余:分开执行两次find会重复扫描目录,效率较低,推荐合并处理或优化逻辑。

基础版脚本(分步执行)

#!/bin/bash

# 定义搜索目录和目标目录,替换为你实际的路径
SEARCH_PATH="/your/source/directory"
DEST_PATH="/your/destination/directory"

# 确保目标目录存在,不存在则创建
mkdir -p "$DEST_PATH"

# 查找1天内修改的文件并压缩
find "$SEARCH_PATH" -type f -newermt "1 day ago" -exec gzip {} \;

# 查找刚生成的压缩文件并移动到目标目录
find "$SEARCH_PATH" -type f -name "*.gz" -newermt "1 day ago" -exec mv {} "$DEST_PATH" \;

优化版脚本(单次扫描,批量处理)

这个版本只扫描一次目录,压缩后直接移动,效率更高:

#!/bin/bash

SEARCH_PATH="/your/source/directory"
DEST_PATH="/your/destination/directory"

mkdir -p "$DEST_PATH"

# 一次查找完成压缩+移动操作
find "$SEARCH_PATH" -type f -newermt "1 day ago" -exec sh -c '
  for file do
    # 压缩文件
    gzip "$file"
    # 移动压缩后的.gz文件到目标目录
    mv "$file.gz" "$0"
  done
' "$DEST_PATH" {} +

使用说明

  1. 修改SEARCH_PATH和DEST_PATH为你实际需要的路径,路径包含空格时也能正常处理(因为用双引号包裹了变量)。
  2. 给脚本添加执行权限:chmod +x file_process.sh。
  3. 测试时可以先把gzip和mv换成echo gzip、echo mv,确认要处理的文件是否正确,避免误操作。

内容的提问来源于stack exchange,提问作者masoud atyabi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:10:45