使用shell脚本删除某个目录下所有后缀不是mp4或jpg的文件
时间: 2024-02-09 07:13:04 浏览: 30
可以使用以下的代码来删除某个目录下所有后缀不是mp4或jpg的文件:
```bash
#!/bin/bash
# 遍历目录下的所有文件
for file in /path/to/directory/*; do
# 判断文件后缀名是否为mp4或jpg
if [[ "${file##*.}" != "mp4" && "${file##*.}" != "jpg" ]]; then
# 删除文件
rm "$file"
fi
done
```
其中 `/path/to/directory` 是需要遍历的目录路径。`${file##*.}` 表示获取文件名的后缀名部分,如果不是mp4或jpg,则使用 `rm` 命令删除文件。注意在删除文件时要谨慎操作,确保不会误删重要文件。
相关问题
使用shell脚本设计一个函数,删除某个目录及其子目录下所有后缀不是mp4或jpg的文件
好的,以下是一个简单的 shell 函数,可以实现删除某个目录及其子目录下所有后缀不是 mp4 或 jpg 的文件:
```bash
function delete_files() {
local dir="$1"
if [[ -z "$dir" ]]; then
echo "Please provide a directory."
return 1
fi
if [[ ! -d "$dir" ]]; then
echo "Directory not found: $dir"
return 2
fi
find "$dir" -type f ! -name "*.mp4" ! -name "*.jpg" -delete
}
```
使用方法:
1. 将上面的代码复制到一个文件中,比如 `delete_non_mp4_jpg_files.sh`;
2. 给该文件赋予执行权限:`chmod +x delete_non_mp4_jpg_files.sh`;
3. 在终端中运行该文件并传入目标目录作为参数,比如 `./delete_non_mp4_jpg_files.sh /path/to/dir`。
注意,该函数会直接删除文件,不可恢复,请谨慎使用。建议在测试时先备份目标目录。
shell文件批量修改图片后缀名
可以使用以下的Shell脚本来批量修改图片后缀名:
```bash
#!/bin/bash
# 进入图片目录
cd /path/to/images/
# 遍历目录下的所有图片文件
for file in *.jpg
do
# 修改文件后缀名为png
mv "$file" "${file%.jpg}.png"
done
```
在执行脚本之前,需要将`/path/to/images/`替换为你实际的图片所在目录。
脚本中的`${file%.jpg}.png`表示将文件名中的`.jpg`替换为`.png`,从而修改文件后缀名。如果需要修改其他格式的图片文件后缀名,只需要将`*.jpg`替换为相应的文件格式即可。