linux命令find

作者: huxt | 来源:发表于2019-06-28 12:59 被阅读0次

    1.find

    1.1).#find pass* 在当前目录下查找以 pass 开头的文件

    1.2) #find /etc/pass*        在/etc 目录中查找以 pass 开头的文件

    1.3) #find /etc/pass* -print  在/etc 目录中查找以 pass 开头的文件,并显示出来

    1.4) #find /etc/ -name abc*  在/etc 目录中查找以 abc 开头的文件,并显示出来

    1.5) #find ./ -name "*.txt"

    1.6) 一天内更改的文件 :find /root/ -mtime -1

    那么,找 “5天之内被更改过的档案名” 就是 find / -mtime -5 ,找“5天前的那一天被更改过的档案名” 就是   find / -mtime 5 ,找“5天之前被更改过的档案名” 就是   find / -mtime +5。我们可以看出有没有 “+,-”的差别

    由这个时光轴我们可以知道,最右边为当前时,+5 代表大于等于 6 天前的档案名, -5 代表小于等于 5 天内的档案名,5 则是代表 5-6 那一天的档案名。

    1.7)-exec 后面可以自定义shell命令

    find . -name "*.back" -exec ls -l {} \;

    find /opt/ -name "*txt" -exec tar -zcvf data.tar.gz {} \;

    find /opt/ -name "*txt" -exec cp {} /root \;

    find . -type f -mtime +14 -exec rm {} \;删除之前最好先ls -l 下(find . -type f -mtime +14 -exec ls -l {} \;)

    find /etc -name “passwd*” -exec grep “root” {} \;

    任何形式的命令都可以在-exec选项中使用。 在上面的例子中我们使用grep命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个root用户。

    ind . -name “*.log” -exec mv {} .. \;

    find . -name "*.back" -o -name "*.pdf"

    -o 表示or

    -a 表示and

    1.8) xargs

    1. 当你尝试用rm 删除太多的文件,你可能得到一个错误信息:/bin/rm Argument list too long. 用xargs 去避免这个问题

    find ~ -name '*.log' -print0 | xargs -0 rm -f

    2.获得/etc/ 下所有*.conf 结尾的文件列表,在这个例子中实用 xargs将find 命令的输出传递给ls -l
    find /etc -name "*.conf" | xargs ls –l

    3.假如你有一个文件包含了很多你希望下载的URL, 你能够使用xargs 下载所有链接

    # cat url-list.txt | xargs wget –c

    4. 查找所有的jpg 文件,并且压缩它

    # find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

    5. 拷贝所有的图片文件到一个外部的硬盘驱动

    # ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

    相关文章

      网友评论

        本文标题:linux命令find

        本文链接:https://www.haomeiwen.com/subject/ecsscctx.html