linux find 使用

本文介绍了一系列使用find命令进行文件管理的技巧,包括如何查找、删除特定条件下的文件,以及文件的移动和重命名等操作。文章还展示了如何利用find命令结合其他工具如grep和rm来高效地管理Linux系统中的文件。

#删除当前目录下更改时间大于5天的文件

find ./ -mtime +5|xargs rm

 

# 删除3天内修改的文件

find ./ -mmin -4320 

 

# 删除修改时间大于3天的文件

find ./ -mtime +3 | xargs rm  

 

-exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。

exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\ 最后是一个分号。

 

# 删除./目录下近一个星期没有被访问的文件

find ./ -atime +7  -print -exec rm  -f  {}  \; 

 

#1.查询所有包含字符串“Hello”的文件

find ./ -exec grep "Hello" {} \;

 

#2.删除所有临时文件

find ./ -name "*.tmp" -exec rm -f {} \;

 

#3 删除20天以前的文件

find ./ -name "*" -ctime +20 -exec rm -f {} \;   注:+20 表示20天以前

 

# 在目录中查找更改时间在n日以前的文件并删除它们,在删除之前先给出提示 (ok安全模式)

find . -name "*.log" -mtime +5 -ok rm {} \;

 

#比如删除时间界于A文件和B文件(不包括A、B文件) 

find -name  "*" -newer A  ! -newer  B  -exec  rm  -f  {}  \; 

 

#如果想同时删除A和B文件则可以用-o   连接条件 

find -name  "* " -o  -name "A "  -o  -name  "B " -newer A  ! -newer  B  -exec  rm  -f  {}  \; 

 

 

####################### success

find ./ -name '*abc*'

find ./ -name '*.java' -print  # 所有的java文件

find ./ -name 'z*.py' -print   # 以z开头的py文件

find ./ -name 'NJReport*' | grep -v NJReport.jar

 

 

# find复杂组合 -exec 是原始写法

find ./ *.jar -print | xargs -i mv -f {} ./mvbak/

find ./ -type f -print | xargs -i mv -f {} ./newdir 

find ./ -mtime +1 -exec mv {} /home/think/njr/bak/mvbak/ \;

 

# 配合 mv

find ./ -name '*-11-*' -exec mv {} ./log_bak/ \;  # 移动文件名中包含-11- 的文件到上级目录下

find ./ -name "*.log" -exec mv {} ./log_bak/ \;

find ./ -name '*-11-*' -exec mv {} ./log_bak/ \;

find ./ -name '*-11-*' -print | xargs -i mv {} ./log_bak/

find ./ -name \*.java | xargs tar -czf java.tar.gz # 打包当前文件夹下的java文件

tar -tzf java.tar.gz    #查看文件内容

 

# 过滤指定文件夹 文件夹跟在path 后面

find ./ -path '*log_bak*' -a -prune -o -print 

find ./ -path '*mvbak*'  -a -prune -o -name '*abc*' -print | xargs -i mv {} /home/think/njr/bak/mvbak/ # 排除目录下的指定文件夹 mvbak

find ./ -path '*filebak*' -a -prune -o -name '*_strategy_*' -print | xargs -i mv {} /vol/hamobsi/DQ_SYNC/filebak

find ./ -name '*-11-*' -exec mv {} {}.bak \;  #批量改文件后缀名

 

Linux 系统中的 `find` 命令是一个非常强大的工具,可以用来查找文件和目录。它的基本语法如下: ``` find [路径] [表达式] ``` 其中,路径是查找的起始目录,表达式用于指定查找条件。以下是一些常见的使用方法: ### 按文件名查找 要按文件名查找文件,可以使用 `-name` 选项。例如,查找名为 `example.txt` 的文件: ```bash find /path/to/search -name example.txt ``` 如果需要忽略大小写,可以使用 `-iname` 选项: ```bash find /path/to/search -iname example.txt ``` ### 按文件类型查找 可以使用 `-type` 选项来指定文件类型。常见的文件类型包括: - `f` 表示普通文件 - `d` 表示目录 - `l` 表示符号链接 例如,查找所有目录: ```bash find /path/to/search -type d ``` ### 按文件大小查找 可以使用 `-size` 选项来根据文件大小进行查找。例如,查找大于 1MB 的文件: ```bash find /path/to/search -size +1M ``` ### 按修改时间查找 可以使用 `-mtime` 选项来根据文件的最后修改时间进行查找。例如,查找在过去 7 天内修改过的文件: ```bash find /path/to/search -mtime -7 ``` ### 按权限查找 可以使用 `-perm` 选项来根据文件的权限进行查找。例如,查找权限为 777 的文件: ```bash find /path/to/search -perm 777 ``` ### 按用户或组查找 可以使用 `-user` 和 `-group` 选项来根据文件的所有者或所属组进行查找。例如,查找属于用户 `john` 的文件: ```bash find /path/to/search -user john ``` ### 执行操作 `find` 命令还可以结合 `-exec` 选项对查找到的文件执行操作。例如,删除所有找到的文件: ```bash find /path/to/search -name "*.tmp" -exec rm {} \; ``` 以上是一些常见的 `find` 命令用法,通过灵活组合这些选项,可以实现更复杂的文件查找需求[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值