[150722]查找某个时间段的文件和find命令

本文介绍如何使用find命令在特定日期范围内查找文件,包括通过文件时间戳、名称、修改时间、大小和类型进行查找,并提供实例演示及替代方法。重点突出find命令的强大功能及其在日常文件管理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查找某个时间段的文件和find命令
 
查找某个时间段的文件,比如要查找2012年8月30号的邮件
 
     首先创建两个文件    www.2cto.com  
 
    touch -t 201208300000 file1
 
    touch -t 201208302359 file2
 
    然后利用find命令的newer选项查找8月15号的邮件
 
    -newer file1 ! file2
 
    find . -type f -newer abc ! -newer def | xargs ls -l
 
或者有更二的查找方式
 
如果文件时间格式为 08-30, 可以直接查找  ll | grep '08-30'
 
   按照文件名查找
      find /var/ -name opensr* 
 
   按照文件修改时间查找并删除,删除邮箱下70天前的邮件的命令:
      find . -type f -mtime +75 | xargs rm -f
 
   按照文件大小查找并删除,删除当前目录下所有大小为0的普通文件的命令:
      find . -type f -size 0c | xargs rm -f
 
   按照类型来查找并删除,删除当前目录下所有的目录的命令:
      find . -type d | xargs rm -rf


吐槽:这个办法感觉好蠢,蠢死了(〃>皿<) ~~可恶啊,等我有时间再去上Google找其他方法,等着~
<think>好的,用户想了解如何在Linux中使用cp或find命令复制特定时间段内的文件。首先,我需要回忆一下相关的命令选项。记得find命令可以根据时间参数来查找文件,比如-mtime、-ctime、-atime,分别对应修改时间、状态改变时间访问时间。不过用户提到的是特定时间段,可能需要用到-newermt或者结合时间范围的条件。 然后,用户可能想把这些找到的文件用cp复制到另一个目录,可能需要结合find的-exec参数或者通过xargs传递文件列表给cp。比如,使用find的-exec选项直接执行cp命令,或者用xargs来处理多个文件。 接下来要考虑时间范围的格式。用户可能需要指定起始结束时间,这时候可以用-newermt! -newermt来组合。例如,查找在2023-10-01到2023-10-07之间的文件,可以写成:find /path -newermt 2023-10-01 ! -newermt 2023-10-07。 还要注意时间参数的格式是否正确,是否需要使用具体的时间点。另外,如果用户的时间是相对当前的时间,比如过去24小时,可以使用-mtime 0表示今天修改的文件,或者-mmin -1440(1440分钟即24小时)。 同时,需要确保用户了解如何将find的结果传递给cp。比如,使用-exec时,每个找到的文件都会执行一次cp,而xargs可以一次性传递多个文件,但需要注意文件名中的特殊字符,可能需要使用-print0xargs -0来处理。 另外,用户可能对权限问题有疑问,比如是否有权限访问这些文件,复制的目标目录是否存在等。但用户的问题主要集中在命令的使用上,可能暂时不需要涉及权限部分,但可以稍微提一下需要注意的地方。 最后,可能需要给出具体的示例,让用户更容易理解。比如,如何组合findcp命令,如何处理时间范围,以及如何复制到目标目录。同时,提醒用户替换路径时间参数为实际需要的值。 总结步骤应该是:1. 使用find命令定位特定时间范围内的文件;2. 将这些文件通过-exec或xargs传递给cp命令进行复制。同时,可能需要解释各个选项的含义,比如-mtime、-newermt等,确保用户理解如何调整时间条件。</think>### 分步说明 1. **确定时间范围参数** Linux的`find`命令支持多种时间条件: - `-mtime n`:文件修改时间在n天前(`+n`表示超过n天,`-n`表示n天内) - `-newermt "YYYY-MM-DD"`:查找比指定时间更新的文件 - 组合条件:例如`-newermt "2023-10-01" ! -newermt "2023-10-07"`表示2023年10月1日至7日之间修改的文件[^3][^1]。 2. **使用`find`命令定位文件** 例如,查找`/var/log`目录中过去24小时内修改的`.log`文件: ```bash find /var/log -name "*.log" -mtime 0 ``` 若需精确到时分秒,使用时间戳格式: ```bash find /path -newermt "2023-10-01 08:00:00" ! -newermt "2023-10-02 17:30:00" ``` 3. **结合`cp`命令复制文件** **方法一**:通过`-exec`参数直接执行复制 ```bash find /source_path -type f -newermt "2023-10-01" ! -newermt "2023-10-07" -exec cp {} /target_path \; ``` **方法二**:通过`xargs`传递文件列表 ```bash find /source_path -type f -newermt "2023-10-01" ! -newermt "2023-10-07" | xargs -I {} cp {} /target_path ``` - `-type f`限定仅搜索普通文件 - `{}`表示匹配到的文件名占位符 --- ### 完整示例 ```bash # 复制/home/user/docs目录中2023年9月内修改的PDF文件到/backup find /home/user/docs -name "*.pdf" -newermt "2023-09-01" ! -newermt "2023-10-01" -exec cp {} /backup \; ``` --- ### 注意事项 1. **权限问题**:确保对源目录有读取权限,目标目录有写入权限[^2] 2. **时间格式**:使用`date`命令验证时间格式有效性(如`date -d "2023-10-01"`) 3. **文件名含空格**:添加`-print0``xargs -0`避免解析错误 ```bash find /path -newermt "2023-10-01" -print0 | xargs -0 cp -t /target_path ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值