xshell脚本删除文件
时间: 2025-05-22 15:28:20 浏览: 17
### 使用 Shell 脚本删除指定文件的方法
#### 方法一:基于时间条件删除文件
当需要按照时间范围删除文件时,可以使用 `date` 命令计算目标日期,并结合 `rm` 删除符合条件的文件。以下是一个示例脚本:
```bash
#!/usr/bin/sh
source /etc/profile
source ~/.bash_profile
# 计算一周前的日期
date_str=$(date -d "7 days ago" "+%Y-%m-%d")
# 构造待删除文件路径
rm_path="/home/flink/flink-1.9.0/log/flink-flink-taskexecutor-*-p2bdap12.log${date_str}.txt"
echo "即将删除的文件路径为: $rm_path"
rm -rf $rm_path
```
此脚本会在每天凌晨运行,自动删除一周前的日志文件[^1]。
---
#### 方法二:按后缀名批量删除文件
如果需要删除某一目录下具有特定后缀名的所有文件,可以使用递归函数或者 `find` 命令完成任务。以下是两种实现方式:
##### 实现方式 1:递归遍历目录结构
通过自定义函数递归进入子目录并删除满足条件的文件。
```bash
#!/bin/bash
function clear_files_by_suffix() {
local target_dir="$1"
local suffix="$2"
cd "$target_dir" || exit
file_list=$(ls -A)
for filename in $file_list; do
if [[ "${filename##*.}" == "$suffix" ]]; then
rm -rf "$filename"
elif [ -d "$filename" ]; then
clear_files_by_suffix "$(pwd)/$filename" "$suffix"
fi
done
cd ..
}
# 示例调用
clear_files_by_suffix "/path/to/target/directory" "meta"
```
上述代码中,`${filename##*.}` 提取文件扩展名并与给定后缀 `$suffix` 进行比较。如果是匹配项,则执行删除操作[^2]。
##### 实现方式 2:使用 `find` 命令快速定位并删除
`find` 是一种高效的工具,可以直接查找并删除符合特定条件的文件。
```bash
#!/bin/bash
# 查找当前目录及其子目录下的所有 .txt 文件并删除
find /path/to/target/directory \( -name "*.txt" -o -name "*.gif" \) -exec rm -v {} \;
```
在此命令中,`\(` 和 `\)` 将多个 `-name` 条件组合起来,形成逻辑 OR 关系 (`-o`)。找到的目标文件会被传递给 `rm` 命令逐一删除[^3]。
---
#### 方法三:删除指定目录下的单一类型文件
如果只需清除某个固定目录内的某种类型的临时文件(如 `.swp`),可以借助 `find` 工具轻松实现。
```bash
#!/bin/bash
current_dir=$(pwd)
temp_files=$(find "$current_dir" -type f -name "*.swp")
if [ -n "$temp_files" ]; then
echo "发现以下 .swp 文件:"
echo "$temp_files"
echo "正在删除..."
rm -rf $temp_files
else
echo "未找到任何 .swp 文件。"
fi
```
此处,`find` 命令限定搜索范围为当前工作目录,并仅返回普通文件 (`-type f`) 中名称以 `.swp` 结尾的结果[^4]。
---
### 总结
根据不同需求可以选择合适的方式来构建适合的 Shell 脚本。无论是依据时间戳还是文件属性筛选对象,都可以灵活运用各种 Linux 工具达成预期效果。
阅读全文
相关推荐

















