shell 循环语句应用实例:让你的工作更加高效

1、 批量重命名文件2、 批量转换图片格式3、 批量压缩 PDF 文件4、 批量下载网页中的图片在日常工作中。


在日常工作中,我们经常需要对大量的文件进行处理、分析或者转换。如果每个文件都一个一个地操作,那么既费时又费力。这时候,循环语句就能够帮助我们快速地完成任务。

在 Linux 系统中,使用 shell 脚本可以方便地编写循环语句来自动化处理任务。本文将通过一些实例来介绍如何使用 shell 循环语句提高工作效率。

1. 批量重命名文件

假设有一批图片文件需要批量重命名为 "pic_1.jpg"、"pic_2.jpg"、"pic_3.jpg" …… "pic_n.jpg" 的格式。手动一个个改显然不够有效率,这时候就可以使用 for 循环来完成这项任务。

```bash

#!/bin/bash

# 获取当前目录下所有的 jpg 文件

for file in *.jpg; do

# 使用 awk 命令获取文件名中的数字部分,并赋值给变量 num

num=$(echo $file | awk -F "[_.]" "{print $2}")

# 将原始文件名重命名为 pic_num.jpg 的格式

mv "$file" "pic_$num.jpg"

done

```

上述脚本首先通过 `for` 循环遍历当前目录下的所有 .jpg 文件。在循环体内,使用 `awk` 命令提取文件名中的数字部分,并将其赋值给变量 `num`。然后使用 `mv` 命令将原始文件名重命名为 "pic_num.jpg" 的格式。

2. 批量转换图片格式

假设有一批 PNG 格式的图片需要批量转换为 JPG 格式。同样地,手动一个个操作效率太低,这时候可以使用 for 循环和 ImageMagick 工具来完成任务。

# 获取当前目录下所有的 png 文件

for file in *.png; do

# 将 png 格式图片转换为 jpg 格式,并覆盖原始文件

convert "$file" "${file%.png}.jpg"

上述脚本首先通过 `for` 循环遍历当前目录下的所有 .png 文件。在循环体内,使用 ImageMagick 工具中的 `convert` 命令将 PNG 格式图片转换为 JPG 格式,并覆盖原始文件。

3. 批量压缩 PDF 文件

假设有一批 PDF 文件需要批量压缩大小以减少存储空间占用。同样地,手动一个个操作效率太低,这时候可以使用 for 循环和 Ghostscript 工具来完成任务。

# 获取当前目录下所有的 pdf 文件

for file in *.pdf; do

# 压缩 pdf 文件并覆盖原始文件

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook

-dNOPAUSE -dBATCH -sOutputFile="$file" "$file"

上述脚本首先通过 `for` 循环遍历当前目录下的所有 .pdf 文件。在循环体内,使用 Ghostscript 工具将 PDF 文件进行压缩,并覆盖原始文件。

4. 批量下载网页中的图片

假设需要批量下载某个网站中的图片,可以通过 for 循环和 wget 工具来实现。

# 获取页面中所有 img 标签中包含的图片链接,并保存到 links.txt 文件中

wget -qO- | grep " links.txt

# 遍历 links.txt 中的链接,并下载对应的图片到当前目录下

while read link; do wget "$link"; done < links.txt

# 删除临时生成的 links.txt 文件

rm links.txt

上述脚本首先使用 `wget` 命令获取某个网站页面中所有 img 标签包含的图片链接,并将其保存到 `links.txt` 文件中。然后使用 `while` 循环遍历 `links.txt` 中每个链接,并通过 `wget` 命令下载对应的图片到当前目录下。最后删除临时生成的 `links.txt` 文件。


通过上述实例,我们可以看到使用 shell 循环语句可以极大地提高工作效率。当然,这只是冰山一角,shell 脚本还有很多强大的功能等待我们去探索和使用。

在编写 shell 脚本时,需要注意语法规范和代码风格。建议先熟悉基础语法和常用命令,再逐渐提高难度编写更加复杂的脚本。