linuxfind删除
A. linux常用命令详解 | find
find 命令的基本结构如下:
find 命令手册 : man find
find 命令中的 -name 选项可以根据文件名称进行检索( 区分大小写 )。如需要忽略文件名中的大小写,可以使用 -iname 选项。
-name 和 -iname 两个选项都支持 wildcards 。如:
例1:查找 /usr 目录下所有文件名以 .txt 结尾的文件
例2:查找 /usr 目录下所有文件名刚好为 4 个字符的文件
例3:查以大写字母开头的文件
例4:查以两个小写字母和两个数字开头的txt文件
类似的还有:
-lname -ilname
-path -ipath
-regx -iregx
有些时候,你需要在搜索时匹配某个文件或目录的 完整路径 ,而不仅仅是匹配文件名。可以使用 -path 或 -ipath 选项。
例1:如查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src 。可以使用以下命令:
例2:在当前目录除aa之外的子目录内搜索 txt文件
例3:在当前目录,不再子目录中,查找txt文件
如果只想搜索得到文件 或 目录,即不想它们同时出现在结果中。可以使用 -type 选项指定文件类型。
-type 选项最常用的参数如下:
例:检索 /usr 下所有文件名以 python 开头的目录
find 命令支持 -empty 选项用来检索 为空 的文件或目录。空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录。
例:检索用户主目录下所有的空目录
find 命令也允许用户对当前的匹配条件进行 “反义” (类似于 逻辑非 操作)。
如需要检索 /usr 下所有文件名 不 以 .txt 为后缀的文件。可以使用以下命令:
也可以“翻转”任何其他的筛选条件,如:检索 /usr 下所有内容不为空的文件
为了检索归属于特定用户的文件或目录,可以使用 -user 选项。
例:检索根目录下所有属主为 starky 的文件
类似于 -user 选项, -group 选项则可以根据文件或目录的 属组 进行检索。
有些时候,需要根据文件创建或修改的时间进行检索。
Linux 系统中,与文件相关联的时间参数有以下三种:
与此对应的是 find 命令中的 -mtime , -atime 和 -ctime 三个选项。
这三个选项的使用遵循以下示例中的规则:
检索 /usr 下两天前被修改过的文件
如果觉得 -mtime 等选项以 天 为单位时间有点长,还可以使用 -mmin , -amin , -cmin 三个选项。
查找比 aa.txt 新 的文件
查找比 aa.txt 旧 的文件
查找比aa.txt新,比bb.txt旧的文件
-size 选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小……)。
表示文件大小的单位由以下字符组成:
另外,还可以使用 + 或 - 符号表示 大于 或 小于 当前条件。
检索文件大小高于 1 GB 的文件
find 命令可以使用 -perm 选项以文件权限为依据进行搜索。
9.1使用符号形式
例1:如需要检索 /usr 目录下权限为 rwxr-xr-x 的文件,可以使用以下命令:
例2:搜索 /usr 目录下所有权限为 r-xr-xr-x (即系统中的所有用户都只有读写权限)的文件和目录,可以使用以下命令:
很多时候,我们只想匹配文件权限的一个 子集 。比如,检索可以直接被任何用户执行的文件,即只关心文件的执行权限,而不用管其读写权限是什么。
上述的需求可以通过以下命令实现:
其中 a=x 前面的 / 符号即用来表示只匹配权限的某个子集(执行权限),而不用关心其他权限的具体设置。
9.2使用数字形式
例如:搜索 /usr 目录下权限为 644 (即 rwxr-xr-x )的文件
find 命令默认是以 递归 的方式检索项目的,这有时候会导致得到的结果数量非常巨大。可以使用 -maxdepth 限制 find 命令递归的层数。
例如:搜索时向下递归的层数最大为 3
在之前的例子中有出现多个搜索条件的 组合 以及对某个搜索条件的 反转 。
实际上 find 命令支持 “and” 和 “or” 两种逻辑运算,对应的命令选项分别是 -a 和 -o 。通过这两个选项可以对搜索条件进行更复杂的组合。
此外还可以使用 小括号 对搜索条件进行 分组 。注意 find 命令中的小括号常需要用 单引号 包裹起来。因小括号在 Shell 中有特殊的含义。
如检索 /usr 下文件名以 python 开头且类型为目录的文件
该命令等同于:
更复杂的组合形式如:
例4:在除dir0及子目录以外的目录下查找txt后缀文件
说明:-a 应该是and的缩写,意思是逻辑运算符‘与’(&&); -o应该是or的缩写,意思是逻辑运算符‘或’(||), -not 表示非.
命令行的意思是:如果目录dir0存在(即-a左边为真),则求-prune的值,-prune 返回真,‘与’逻辑表达式为真(即-path './dir0*' -a -prune 为真),find命令将在除这个目录以外的目录下查找txt后缀文件并打印出来;如果目录dir0不存在(即-a左边为假),则不求值-prune ,‘与’逻辑表达式为假,则在当前目录下查找所有txt后缀文件。
-delete 选项可以用来删除搜索到的文件和目录。
例如:删除 home 目录下所有的空目录:
-exec 选项可以对搜索到的结果执行执行该参数所给出的shell命令。形式为 command {} ; ,注意{}与;之间有空格 。每当 find 命令检索到一个符合条件的文件,会使用其完整路径取代命令中的 {} ,然后执行 -exec 后面的命令一次。
例1:如需要将 home 目录下所有的 MP3 音频文件复制到移动存储设备(假设路径是 /media/MyDrive ),可使用下面的命令:
其中的 大括号 ( {} )作为检索到的文件的 占位符 ,而分号( ; )作为命令结束的标志。因为分号是 Shell 中有特殊含义的符号,所以需要使用单引号括起来或前面加上转义符 。
例2:查看当前目录下的所有普通文件,并在 - exec 选项中使用 ls -l 命令将它们列出
例3:在多个文件中检索某个指定的字符串。如在用户主目录下的所有文件中检索字符串 hello ,可以使用如下命令:
创建 Gzip 格式的压缩文件的命令为:
现在假设需要将用户主目录下所有的 MP3 文件添加到压缩包 music.tar.gz 中,直观的感觉是,其命令应为如下形式:
实际情况是,这样得到的 music.tar.gz 其实只包含一个 MP3 文件。原因是 find 命令 每次 发现一个音频文件,都会再执行一次 -exec 选项后面的压缩命令。导致先前生成的压缩包被覆盖。
可以先让 find 命令检索出所有符合条件的音频文件,再将得到的 文件列表 传递给后面的压缩命令。完整的命令如下:
如果想浏览搜索到的文件(目录)的详细信息(如权限和大小等),可以直接使用 -ls 选项。
例如:浏览所有 1G 以上大小的文件的详细信息
与exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执行
与 exec 作用相同 ,起承接作用。区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等
例1:查找以ap或may开头的文件
例2:查硬连接数大于2的文件或目录
例3:查找含特定字符串的文件。查找当前目录下含有"the string you want find…"字符串的文件:
例4:从根目录开始查tmpfile,一旦查到马上删除
例5:如何用find查找某一天更改的文件?可以使用这一行命令来实现:
A Guide to the Linux “Find” Command
https://www.cnblogs.com/wanqieddy/archive/2011/06/09/2076785.html
https://blog.csdn.net/l_liangkk/article/details/81294260
https://blog.csdn.net/hetoto/article/details/84101745
http://c.biancheng.net/view/779.html
http://blog.chinaunix.net/uid-24648486-id-2998767
https://www.runoob.com/linux/linux-comm-find.html
https://www.jb51.net/article/147275.htm
B. linuxfind查找大于多少天的文件,并删除之
linux查找超过一定时间的文件,并批量删除
1、find . -maxdepth 4 -name "*-*" -mtime 3
-maxdepth的值决定是否对下面的子目录进行递归查找
-mtime 3表示查找3天内的,-mtime +3表示查找超过3天的,也就是查找3天前的文件
2、find . -maxdepth 4 -name "*-*" -mtime 3 | sudo xargs rm -rf
-----------------------------------------------------------------------------------------------------------------------------
find ./ -maxdepth 4 -mtime +3 -a -mtime -20 -type f
-- 如果将xmaxdepth放置于-mtime之后,将会抛出这个错误
find: warning: you have specified the -maxdepth option after a non-option argument -mtime, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
-----------------------------------------------------------------------------------------------------------------------------
-mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。
-mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。
-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件
-mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件
-----------------------------------------------------------------------------------------------------------------------------
-maxdepth 参数详解
-maxdepth选项的作用就是限制find命令在目录中按照递减方式查找文件的时候搜索文件超过某个级别或者搜索过多的目录,这样导致查找速度变慢,查找花费的时间过多。例如,我们要在当前(.)目录技巧子目录中查找一个名叫fred的文件,我们可以使用如下命令
find . -maxdepth 2 -name fred
假如这个fred文件在./sub1/fred目录中,那么这个命令就会直接定位这个文件,查找很容易成功。假如,这个文件在./sub1/sub2/fred目录中,那么这个命令就无法查找到。因为前面已经给find命令在目录中最大的查询目录级别为2,只能查找2层目录下的文件。这样做的目的就是为了让find命令更加>
精确的定位文件,如果你已经知道了某个文件大概所在的文件目录级数,那么加入-maxdepth n 就很快的能在指定目录中查找成功。
也即是-maxdepth 参数指定递归查找级别,如果-maxdepth 2 则查找当前目录递归查找2层,-maxdepth 4 则查找当前目录递归查找4层。
C. Linux下查找和删除指定大小的文件
LINUX删除大于/小于固定大小的文件等 删除目录下大小为0的文件 find./ -name"*"-type f -size 0c |xargs-n1rm-f 删除当前目录下面所有 test 文件夹下面的文件 find./ -name"test"-type d -execrm-rf {} ; 删除文件夹下面的所有的.py文件 find./ -name'.py'-execrm-rf {} ; 显示当前路径下,大于50M的文件 find./ -size +50M 删除当前路径下,大于50M的文件 find./ -size +50M -execrm{} \; 参考: https://www.cnblogs.com/yuanmingzhou/p/11082966.htmlD. linux删除大量文件的6种方法
1. rm
由于文件数量过多,rm不起作用。
2. find
大概43分钟。
3. find with delete
用时9分钟。
4. rsync
首先建立空文件夹blanktest
16s,很好很强大。
5. Python
大概用时8分钟。
6. Perl
E. Linux find 命令详解
find 命令的基本结构如下:
find [paths] [expression] [actions]
find 命令接受一个或多个 路径 ( paths )作为搜索范围,并在该路径下 递归 地搜索。即检索完指定的目录后,还会对该目录下的子目录进行检索,以及子目录下的子目录。。。直到到达目录树底部。
默认情况下(不带任何搜索条件),find 命令会返回指定目录下的 所有文件 ,所以常常需要通过特定的 expression 对结果进行 筛选 。
find 命令默认的 action 是将所有检索结果打印至标准输出。可以通过自定义 action ,让 find 命令对搜索到的结果执行特定的操作。
这里先不做详细解释,简单地测试下 find 命令:
find 命令中的 -name 选项可以根据文件名称进行检索( 区分大小写 )。如需要忽略文件名中的大小写,可以使用 -iname 选项。
-name 和 -iname 两个选项都支持 wildcards 。如:
find /usr -name '*.txt' 查找 /usr 目录下所有文件名以 .txt 结尾的文件
find /usr -name '????' 查找 /usr 目录下所有文件名刚好为 4 个字符的文件
有些时候,你需要在搜索时匹配某个文件或目录的 完整路径 ,而不仅仅是匹配文件名。可以使用 -path 或 -ipath 选项。
如查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src 。可以使用以下命令:
find /usr -path '*/src/*.txt'
如果只想搜索得到文件 或 目录,即不想它们同时出现在结果中。可以使用 -type 选项指定文件类型。
-type 选项最常用的参数如下:
find /usr -type d -name 'python*' 检索 /usr 下所有文件名以 python 开头的 目录
find 命令支持 -empty 选项用来检索 为空 的文件或目录。空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录。
find ~ -type d -empty 检索用户主目录下所有的空目录
find 命令也允许用户对当前的匹配条件进行 “反义” (类似于 逻辑非 操作)。
如需要检索 /usr 下所有文件名 不 以 .txt 为后缀的文件。可以使用以下命令:
find /usr -type f ! -name '*.txt'
也可以“翻转”任何其他的筛选条件,如:
find /usr -type f ! -empty 检索 /usr 下所有内容不为空的文件
为了检索归属于特定用户的文件或目录,可以使用 -user 选项。
find / -type f -user starky 检索根目录下所有属主为 starky 的文件
类似于 -user 选项, -group 选项则可以根据文件或目录的 属组 进行检索。
有些时候,需要根据文件创建或修改的时间进行检索。
Linux 系统中,与文件相关联的时间参数有以下三种:
与此对应的是 find 命令中的 -mtime , -atime 和 -ctime 三个选项。
这三个选项的使用遵循以下示例中的规则:
find /usr -type f -mtime 2 检索 /usr 下两天前被修改过的文件
如果觉得 -mtime 等选项以 天 为单位时间有点长,还可以使用 -mmin , -amin , -cmin 三个选项:
find /usr -type f -mtime +50 -mtime -100 检索 /usr 下 50 到 100 天之前修改过的文件
find /usr -type f -mtime 2 -amin 5 检索 /usr 下两天前被修改过且 5 分钟前又读取过的文件
-size 选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小……)。
表示文件大小的单位由以下字符组成:
另外,还可以使用 + 或 - 符号表示 大于 或 小于 当前条件。
find / -size +1G 检索文件大小高于 1 GB 的文件
find 命令可以使用 -perm 选项以文件权限为依据进行搜索。
如需要检索 /usr 目录下权限为 rwxr-xr-x 的文件,可以使用以下命令:
find /usr -perm u=rwx,g=rx,o=rx
搜索 /usr 目录下所有权限为 r-xr-xr-x (即系统中的所有用户都只有读写权限)的文件和目录,可以使用以下命令:
find /usr -perm a=rx
很多时候,我们只想匹配文件权限的一个 子集 。比如,检索可以直接被任何用户执行的文件,即只关心文件的执行权限,而不用管其读写权限是什么。
上述的需求可以通过以下命令实现: find / -type f -perm /a=x
其中 a=x 前面的 / 符号即用来表示只匹配权限的某个子集(执行权限),而不用关心其他权限的具体设置。
-perm 选项也支持数字形式的文件权限标记。
find /usr -perm 644 搜索 /usr 目录下权限为 644 (即 rwxr-xr-x )的文件
find 命令默认是以 递归 的方式检索项目的,这有时候会导致得到的结果数量非常巨大。可以使用 -maxdepth 限制 find 命令递归的层数。
find / -maxdepth 3 搜索时向下递归的层数最大为 3
在之前的例子中有出现多个搜索条件的 组合 以及对某个搜索条件的 反转 。
实际上 find 命令支持 “and” 和 “or” 两种逻辑运算,对应的命令选项分别是 -a 和 -o 。通过这两个选项可以对搜索条件进行更复杂的组合。
此外还可以使用 小括号 对搜索条件进行 分组 。注意 find 命令中的小括号常需要用 单引号 包裹起来。因小括号在 Shell 中有特殊的含义。
如检索 /usr 下文件名以 python 开头且类型为目录的文件
find /usr -type d -name 'python*'
该命令等同于:
find /usr -type d -a -name 'python*'
更复杂的组合形式如:
find / '(' -mmin -5 -o -mtime +50 ')' -a -type f
-delete 选项可以用来删除搜索到的文件和目录。
如删除 home 目录下所有的空目录:
find ~ -type d -empty -delete
-exec 选项可以对搜索到的结果执行特定的命令。
如需要将 home 目录下所有的 MP3 音频文件复制到移动存储设备(假设路径是 /media/MyDrive ),可使用下面的命令:
find ~ -type f -name '*.mp3' -exec cp {} /media/MyDrive ''
其中的 大括号 ( {} )作为检索到的文件的 占位符 ,而分号( ; )作为命令结束的标志。因为分号是 Shell 中有特殊含义的符号,所以需要使用单引号括起来。
每当 find 命令检索到一个符合条件的文件,会使用其完整路径取代命令中的 {} ,然后执行 -exec 后面的命令一次。
另一个很重要的用法是,在多个文件中检索某个指定的字符串。
如在用户主目录下的所有文件中检索字符串 hello ,可以使用如下命令:
find ~ -type f -exec grep -l hello {} ''
创建 Gzip 格式的压缩文件的命令为: tar -czvf filename.tar.gz <list of files>
现在假设需要将用户主目录下所有的 MP3 文件添加到压缩包 music.tar.gz 中,直观的感觉是,其命令应为如下形式:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} ''
实际情况是,这样得到的 music.tar.gz 其实只包含一个 MP3 文件。
原因是 find 命令 每次 发现一个音频文件,都会再执行一次 -exec 选项后面的压缩命令。导致先前生成的压缩包被覆盖。
可以先让 find 命令检索出所有符合条件的音频文件,再将得到的 文件列表 传递给后面的压缩命令。完整的命令如下:
find ~ -type f -name '*.mp3' -exec tar -czvf music.tar.gz {} +
如果想浏览搜索到的文件(目录)的详细信息(如权限和大小等),可以直接使用 -ls 选项。
find / -type file -size +1G -ls 浏览所有 1G 以上大小的文件的详细信息
A Guide to the Linux “Find” Command
find 命令手册 : man find
F. linux是否会定期删除文件夹下面超过30日的文件
1.删除文件命令:x0dx0afind 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;x0dx0a实例命令:x0dx0afind /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;x0dx0a说明:x0dx0a将/opt/soft/log/目录下所有30天前带".log"的文件删除。具体参数说明如下:x0dx0afind:linux的查找命令,用户查找指定条件的文件;x0dx0a/opt/soft/log/:想要进行清理的任意目录;x0dx0a-mtime:标准语句写法;x0dx0a+30:查找30天前的文件,这里用数字代表天数;x0dx0a"*.log":希望查找的数据类型,"*.jpg"表示查找扩展名为jpg的所有文件,"*"表示查找所有文件,这个可以灵活运用,举一反三;x0dx0a-exec:固定写法;x0dx0arm -rf:强制删除文件,包括目录;x0dx0a{} \; :固定写法,一对大括号+空格+\+; x0dx0ax0dx0a2.计划任务:x0dx0a若嫌每次手动执行语句太麻烦,可以将这小语句写到一个可执行shell脚本文件中,再设置cron调度执行,那就可以让系统自动去清理相关文件。x0dx0ax0dx0a2.1创建shell:x0dx0atouch /opt/soft/bin/auto-del-30-days-ago-log.shx0dx0achmod +x auto-del-30-days-ago-log.shx0dx0a新建一个可执行文件auto-del-30-days-ago-log.sh,并分配可运行权限x0dx0ax0dx0a2.2编辑shell脚本:x0dx0avi auto-del-30-days-ago-log.shx0dx0a编辑auto-del-30-days-ago-log.sh文件如下:x0dx0a#!/bin/shx0dx0afind /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;x0dx0aok,保存退出(:wq)。x0dx0ax0dx0a2.3计划任务:x0dx0a#crontab -ex0dx0a将auto-del-30-days-ago-log.sh执行脚本加入到系统计划任务,到点自动执行x0dx0a输入:x0dx0a10 0 * * * /opt/soft/log/auto-del-7-days-ago-log.sh >/dev/null 2>&1x0dx0a这里的设置是每天凌晨0点10分执行auto-del-7-days-ago-log.sh文件进行数据清理任务了。
G. linux中find命令的使用详解
常用命令
find (目录) [-type d | f] (文件夹 | 文件) -name (名称,可使用正则表达式)
find /root -name "*core"
find /root -type d -name "*core" 文件夹
find /root -type f -name "*core" 文件
find /root -type f -path "*core" 路径
find /root -name "*core" -delete 查到后删除
find /root -size +20M (-20M) 大于20M(小于20M)
find /root -name "*core" -exec ls {} ; 对查找后的文件执行ls操作
壹——主要内容