如何在Linux中删除30天前的指定*.pdf格式文件
批量删除目录下30天前的PDF文件(适配含空格文件名、保留配置文件)
核心思路
仅针对PDF文件筛选,匹配30天前的文件,利用系统工具原生处理含空格的文件名,因配置文件非PDF格式,无需额外排除即可避免误删。
Linux/Unix/macOS 解决方案(推荐)
1. 先验证待删除文件(安全前置步骤)
先列出所有符合条件的PDF文件,确认无误后再执行删除:
find /你的目标目录路径 -maxdepth 1 -type f -name "*.pdf" -mtime +30 -print
参数说明:
/你的目标目录路径:替换为实际目录(比如/data/pdf_archive)-maxdepth 1:仅处理当前目录,不递归子目录(需递归则移除该参数)-type f:仅匹配文件,排除目录-name "*.pdf":精准筛选PDF文件,自动排除非PDF格式的配置文件-mtime +30:匹配修改时间超过30天的文件(按访问时间用-atime,部分系统按创建时间用-ctime)
2. 执行删除
确认待删列表正确后,替换-print为-delete执行删除:
find /你的目标目录路径 -maxdepth 1 -type f -name "*.pdf" -mtime +30 -delete
注:
find命令原生支持含空格的文件名,无需额外转义,会逐个处理文件对象,避免空格导致的分割错误。
Windows 解决方案(PowerShell)
1. 先验证待删除文件
Get-ChildItem -Path "C:\你的目标目录路径" -Filter *.pdf -File | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) }
2. 执行删除
添加Remove-Item -Force完成删除:
Get-ChildItem -Path "C:\你的目标目录路径" -Filter *.pdf -File | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } | Remove-Item -Force
内容的提问来源于stack exchange,提问作者VikasB
相关产品推荐
相关产品推荐

