shell中写一个函数,判断如果某个具体目录下的文件不存在,就新建
时间: 2024-04-17 09:26:09 浏览: 5
你可以在 Shell 脚本中定义一个函数来实现这个逻辑。下面是一个示例的函数:
```shell
#!/bin/bash
create_directory() {
local directory=$1
if [ ! -d "$directory" ]; then
echo "Creating directory: $directory"
mkdir -p "$directory"
else
echo "Directory already exists: $directory"
fi
}
# 调用函数来创建目录
create_directory "/path/to/directory"
```
在这个示例中,`create_directory` 函数接收一个参数 `directory`,表示要检查和创建的目录路径。函数首先使用 `-d` 条件判断目录是否存在,如果不存在则输出相应的信息,并使用 `mkdir -p` 命令创建该目录(`-p` 选项表示创建多级目录)。如果目录已经存在,则输出相应的信息。
你可以根据自己的需要调用这个函数,并传递具体的目录路径作为参数。如果目录不存在,函数将会创建它;如果目录已经存在,则不会执行创建操作。
相关问题
使用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 写一个函数判断文件是不是今天的
可以使用 `stat` 命令来获取文件的修改时间,然后再使用 `date` 命令来获取当前日期,最后比较这两个日期是否相同即可。
下面是一个例子:
```bash
# 获取文件的修改时间
modify_time=$(stat -c %y <文件名>)
# 获取当前日期
today=$(date +%F)
# 判断文件是不是今天的
if [[ $modify_time == *$today* ]]; then
echo "文件是今天的"
else
echo "文件不是今天的"
fi
```
其中,`%y` 表示获取文件的修改时间,`%F` 表示获取当前日期,格式为 `YYYY-MM-DD`。
注意:上面的脚本中使用了 `[[ ]]` 来进行判断,这是 `bash` 中的特殊语法,如果使用其他的 shell,可能需要使用 `[ ]` 或者 `test` 命令来进行判断。
参考文档:
- `stat` 命令:https://www.man7.org/linux/man-pages/man1/stat.1.html
- `date` 命令:https://www.man7.org/linux/man-pages/man1/date.1.html