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
网友评论