使用shell脚本设计一个函数,删除某个目录及其子目录下所有后缀不是mp4或jpg的文件
时间: 2024-02-09 17:13:22 浏览: 22
好的,以下是一个简单的 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脚本删除某个目录下所有后缀不是mp4或jpg的文件
可以使用以下的代码来删除某个目录下所有后缀不是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脚本,查找linux目录下的所有.txt文件是否包含某个字段
好的,我可以为您编写一个查找Linux目录下所有.txt文件中是否包含特定字符串的Shell脚本。请按以下步骤进行操作:
1. 打开一个文本编辑器,如vi或nano。
2. 在编辑器中输入以下Shell脚本代码:
```
#!/bin/bash
# 修改此处为要查找的目录
directory=/linux
# 修改此处为要查找的字符串
string="example"
# 查找目录下所有的 .txt 文件并搜索字符串
for file in $(find $directory -type f -name "*.txt")
do
if grep -q $string "$file"
then
echo "目录$file 包含字符串"
else
echo "目录$file 不包含字符串"
fi
done
```
3. 保存脚本并退出编辑器。
4. 在终端命令行中执行以下命令以使脚本可执行:
```
chmod +x script.sh
```
5. 执行脚本以开始搜索:
```
./script.sh
```
6. 脚本将搜索目录及其子目录中所有.txt文件,并输出它们是否包含指定的字符串。
希望这个脚本能够满足您的需求。如果您有任何其他问题,请告诉我。