linux技术专栏

linux命令find

2019-06-28  本文已影响0人  huxt

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

上一篇 下一篇

猜你喜欢

热点阅读