shell 脚本压缩图片
时间: 2023-11-12 19:08:22 浏览: 37
您可以使用以下步骤来编写一个shell脚本来压缩图片:
1. 创建一个新的shell脚本文件,例如compress_images.sh。
2. 在脚本中添加以下代码来查找60分钟以内曾被修改过的图片文件,并且大于100kb的图片才会进行压缩:
```
#!/bin/bash
find /path/to/images -type f -mmin -60 -size +100k \( -name "*.jpg" -o -name "*.png" \) -print0 | while read -d $'\0' file
do
# 压缩图片的代码
done
```
3. 在while循环中添加压缩图片的代码。您可以使用sips命令来压缩图片。例如,以下代码将压缩png格式的图片:
```
sips -s format png -Z 1024 "$file" --out "${file%.*}_compressed.png"
```
这将把图片压缩到1024像素的宽度,并将其保存为原始文件名加上"_compressed"的新文件。
4. 保存并关闭脚本文件。
5. 在终端中运行以下命令来使脚本文件可执行:
```
chmod +x compress_images.sh
```
6. 运行脚本文件:
```
./compress_images.sh
```
这将在指定的路径中查找并压缩符合条件的图片文件。
相关问题
常用的shell脚本举例
### 回答1:
可以举例一些常用的 shell 脚本,例如:
1. 批量重命名文件:使用 for 循环和 mv 命令,可以批量重命名文件,例如将所有以 .txt 结尾的文件名中的空格替换为下划线:for file in *.txt; do mv "$file" "${file// /_}"; done
2. 自动备份文件:使用 tar 命令和定时任务,可以定期自动备份指定目录下的文件,例如每天凌晨 3 点备份 /var/log 目录下的所有文件: 3 * * * tar -czvf /backup/log-$(date +\%Y\%m\%d).tar.gz /var/log/*
3. 批量压缩图片:使用 find 命令和 convert 命令,可以批量压缩指定目录下的所有图片,例如将 /home/user/pictures 目录下所有大小超过 1MB 的图片压缩到 50%:find /home/user/pictures -type f -size +1M -exec convert {} -resize 50% {} \;
4. 自动清理日志文件:使用 logrotate 工具和定时任务,可以定期自动清理指定目录下的日志文件,例如每周一清理 /var/log/nginx 目录下的所有日志文件: * * 1 /usr/sbin/logrotate /etc/logrotate.d/nginx
以上是一些常用的 shell 脚本示例,可以根据实际需求进行修改和扩展。
### 回答2:
常用的shell脚本有很多,以下是一些常见的例子:
1. 备份脚本:用于自动备份关键数据的脚本。可以使用tar命令将指定目录下的文件打包成一个压缩文件,并将其存储到指定位置。
2. 定时任务脚本:用于在指定时间或间隔内自动执行任务的脚本。可以使用cron或者at命令来设置定时任务,并在指定时间点执行指定的命令或脚本。
3. 监控脚本:用于监控服务器性能或特定服务状态的脚本。可以使用ps命令查看进程状态,df命令查看磁盘空间使用情况,以及tail命令查看日志文件内容来监控服务器的运行状况。
4. 系统初始化脚本:用于系统初始化配置的脚本。可以通过该脚本自动创建用户、安装指定软件、配置环境变量等。
5. 批量处理脚本:用于批量执行相同操作的脚本。比如,批量修改文件名、批量压缩图片、批量替换文本等。
6. 日志分析脚本:用于分析日志文件内容的脚本。可以使用grep命令来筛选指定内容,并使用awk或sed命令对内容进行进一步处理和分析。
7. 数据清理脚本:用于定期清理无用数据的脚本。可以指定某个目录,自动删除一段时间内未被访问的文件。
这些只是一些常见的例子,实际上shell脚本的应用非常广泛,可以根据具体需求编写适合自己的脚本。
shell脚本怎么判断文件类型
在shell脚本中,可以使用 `file` 命令来判断文件类型。该命令会根据文件的特征码(magic number)来判断文件类型,因此可以判断大多数文件类型,包括文本、二进制、压缩文件、图片、音频等等。
例如,若要判断一个名为 `test.txt` 的文件是否为文本文件,可以使用以下命令:
```
file test.txt
```
该命令会输出该文件的类型信息,例如:
```
test.txt: ASCII text
```
如果要在脚本中使用该命令,可以将输出信息重定向到一个变量中,然后根据输出信息来判断文件类型。例如:
```
file_info=$(file test.txt)
if echo "$file_info" | grep -q "text"; then
echo "This is a text file."
else
echo "This is not a text file."
fi
```
上述脚本会将 `test.txt` 文件的类型信息保存到变量 `file_info` 中,然后使用 `grep` 命令来查找是否包含 "text" 字符串。如果包含,则判断为文本文件;否则判断为非文本文件。
相关推荐
![sh](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)