场景一:查找并处理特定文件
场景描述:
假设你需要在/home/user/documents
目录下查找所有以.txt
结尾的文件,并将这些文件的内容按行排序后输出到sorted_contents.txt
文件中。
应用示例:
find /home/user/documents -type f -name "*.txt" -exec cat {} \; | sort > sorted_contents.txt
解释:
find /home/user/documents -type f -name "*.txt"
:在/home/user/documents
目录下查找所有类型为文件(-type f
)且文件名以.txt
结尾的文件。-exec cat {} \;
:对每个找到的文件执行cat
命令以输出其内容。{}
是一个占位符,代表当前找到的文件名。|
:管道符,将find
命令的输出作为sort
命令的输入。sort
:对输入的行进行排序。> sorted_contents.txt
:将排序后的输出重定向到sorted_contents.txt
文件中。
场景二:检查磁盘空间并发送警报
场景描述:
你希望定期检查磁盘空间,如果磁盘使用率达到90%或以上,则发送一封警报邮件。
应用示例:
df -h | grep '/dev/sda1' | awk '{print $5}' | sed 's/%//g' | while read output; do
if [ $output -ge 90 ]; then
echo "Disk space alert! Usage is $output%." | mail -s "Disk Space Alert" your_email@example.com
fi
done
解释:
df -h
:显示磁盘使用情况,并以人类可读的格式(如GB、MB)输出。grep '/dev/sda1'
:只选择/dev/sda1
分区的信息(你可以根据需要更改分区名)。awk '{print $5}'
:使用awk
命令打印第五列,即磁盘使用率。sed 's/%//g'
:使用sed
命令删除百分号,以便后续的数字比较。while read output; do ... done
:循环读取sed
命令的输出,每次迭代将输出值存储在output
变量中。if [ $output -ge 90 ]; then ... fi
:如果磁盘使用率大于或等于90%,则执行then
后面的命令。echo ... | mail -s "Disk Space Alert" your_email@example.com
:发送包含警报信息的邮件。你需要将your_email@example.com
替换为你的电子邮件地址,并确保你的系统上已安装并配置了mail
命令。