find命令是Linux系统中最常用的查找文件的命令,可以按照文件的修改日期、访问日期、修改时间、访问时间、状态改变时间等进行查找。
要按日期查找文件,可以使用find命令配合特定的参数来实现。具体的命令格式为:
find [路径] [find命令的表达式]
其中:
[路径]指定了要查找的目录或文件夹的路径,如果不指定,默认为当前工作目录。
[find命令的表达式]指定了要匹配的条件。
1. 按照文件的修改日期查找文件:
find [路径] -type f -mtime [+-][天数]
其中,-type f表示只查找普通文件,不包括目录和符号链接等。-mtime后的[+-][天数]用于指定相对于当前时间的天数,+表示在某个天数前,-表示在某个天数后。
例如,要查找7天内被修改过的文件,可以使用以下命令:
find /path/to/directory -type f -mtime -7
2. 要按照文件的访问日期查找文件:
find [路径] -type f -atime [+-][天数]
其中,-atime表示按访问日期查找文件。
3. 按照修改时间查找文件:
find /path/to/directory -type f -newermt "YYYY-MM-DD HH:MM:SS"
其中,/path/to/directory是要查找的目录路径,”YYYY-MM-DD HH:MM:SS”是修改时间的起始点。通过该命令可以查找出指定目录下修改时间在该起始点之后的所有文件。
4.按照访问时间查找文件:
find /path/to/directory -type f -newerat "YYYY-MM-DD HH:MM:SS"
该命令与按照修改时间查找文件的命令类似,只是将 -newermt 替换为 -newerat 即可。
5.按照状态改变时间查找文件:
find /path/to/directory -type f -newerct "YYYY-MM-DD HH:MM:SS"
该命令与按照修改时间查找文件的命令类似,只是将 -newermt 替换为 -newerct 即可。
6.按日期查找文件:
find [路径] -type f -newermt "开始日期" ! -newermt "结束日期"
或者
find [路径] -type f -newermt "开始日期" ! -newermt "开始日期 +1 day"
其中:
– [路径]:指定要查找的目录或文件路径。
– -type f
:表示只查找文件,不包括目录。
– -newermt "开始日期"
:指定查找的起始日期,格式为YYYY-MM-DD。
– -newermt "结束日期"
:指定查找的结束日期,格式为YYYY-MM-DD。
例如,查找当前目录下2024年9月17日到2024年9月18日之间修改过的所有文件(也就是2024-09-17这天修改过的所有文件):
find ./ -type f -newermt "2024-09-17" ! -newermt "2024-09-18"
或者
find ./ -type f -newermt "2024-09-17" ! -newermt "2024-09-17 +1 day"
7.find查询出来文件之后,如果对文件批量处理,需要用exec命令:
find [路径] [find命令的表达式] -exec 命令 {} \;
或者
find [路径] [find命令的表达式] -exec 命令 {} +;
在exec命令中:
{} 代表find命令找到的文件名。
; 代表命令的结束。
+; 代表命令的结束。
-exec 后面以‘ \ ’结尾表示将每个匹配到的文件分别执行一次命令。
-exec 后面以‘ + ’结尾表示将匹配到的文件一次性传递给执行命令,而不是为每个文件单独执行一次。这种方式对于一次性处理多个文件可以提高效率,因为它可以将多个文件名合并成一个参数列表,减少命令启动的次数。
例如:查找当前目录下2024年9月17日到2024年9月18日之间修改过的所有文件,并按照ls -lrt查看
find . -type f -newermt "2024-09-17" ! -newermt "2024-09-18" -exec ls -lrt {} +;
查找以.log结尾的文件并复制文件到目标目录
find /path/to/files -type f -name "*.log" -exec cp {} /path/to/destination/ \;
查找以.sh结尾的文件并修改文件权限
find /path/to/files -type f -name "*.sh" -exec chmod +x {} \;
查找以.txt结尾的文件并压缩文件
find /path/to/files -type f -name "*.txt" -exec gzip {} +;
例如
find /path/to/files -type f -name "*.txt" -exec tar -zcvf xxx.tar.gz {} +;
版权归原作者 Sunny Boy 001 所有, 如有侵权,请联系我们删除。