题目2、 设计一个Shell程序,一班同学请在/class202001目录下建立70个目录,即s2006031001~s2006031062
时间: 2024-03-05 09:47:31 浏览: 9
以下是一个简单的Shell程序,可以在/class202001目录下创建70个以s20060310开头的目录,目录名分别为s2006031001到s2006031062:
```bash
#!/bin/bash
# 进入/class202001目录
cd /class202001
# 循环创建70个目录
for i in {1..70}
do
# 将数字转换为4位数的字符串
num=$(printf "%04d" $i)
# 创建目录
mkdir "s20060310$num"
done
echo "目录创建完成!"
```
将以上代码保存为一个.sh文件,如create_dirs.sh,然后在Terminal中执行以下命令即可运行:
```bash
sh create_dirs.sh
```
运行结束后,在/class202001目录下应该会出现70个目录,名字分别为s2006031001到s2006031062。
相关问题
使用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`。
注意,该函数会直接删除文件,不可恢复,请谨慎使用。建议在测试时先备份目标目录。
在liunx中用shell编写一个程序脚本,输入一个文件名如果是目录打印出目录,如果不是打印出其他文件
可以使用`if-else`语句和`test`命令来实现这个功能。
代码如下:
```shell
#!/bin/bash
echo -n "请输入文件名:"
read file_name
if [ -d $file_name ]; then
echo "$file_name 是一个目录"
else
echo "$file_name 是一个文件"
fi
```
解释一下:
- `echo -n`:输出提示消息,`-n`选项表示不换行。
- `read`:读取用户输入的文件名。
- `if [ -d $file_name ]; then`:如果文件名是一个目录,则执行`then`后面的语句。
- `echo "$file_name 是一个目录"`:输出提示消息,表示文件名是一个目录。
- `else`:如果文件名不是一个目录,则执行`else`后面的语句。
- `echo "$file_name 是一个文件"`:输出提示消息,表示文件名是一个文件。
注意事项:
- 文件名中不能包含空格,否则会出错。可以使用双引号将变量括起来来避免这个问题,如`if [ -d "$file_name" ]; then`。
- 如果文件名不存在,也会被认为不是一个目录,因此输出结果可能不太符合预期。可以使用`-e`选项来检查文件是否存在,如`if [ -e "$file_name" ] && [ -d "$file_name" ]; then`。