编写一个shell脚本,把当前目录(包含子目录)下所有后缀为“.txt”的文件后缀变更为“.h” 提示:find,for循环
时间: 2024-03-05 19:49:37 浏览: 168
好的,以下是可以实现你的需求的shell脚本:
```bash
#!/bin/bash
# 递归查找当前目录下所有后缀为".txt"的文件并将其后缀改为".h"
find . -type f -name "*.txt" | while read filename
do
mv "$filename" "${filename%.txt}.h"
done
```
这个脚本会在当前目录下查找所有后缀为".txt"的文件,包括子目录中的文件,并将后缀名改为".h"。
注意,如果在脚本执行过程中遇到权限不足的问题,可以在命令前加上`sudo`以获取管理员权限。
相关问题
用shell脚本实现把当前目录(包含子目录)下所有后缀为“.txt”的文件后缀变更为“.h”用上find和for
可以使用以下的shell脚本来实现把当前目录(包含子目录)下所有后缀为“.txt”的文件后缀变更为“.h”:
```
#!/bin/bash
#查找当前目录及其所有子目录下所有后缀为".txt"的文件,并将其后缀改为".h"
find . -type f -name "*.txt" | while read file; do
mv "$file" "${file%.txt}.h"
done
```
在脚本中,我们使用`find`命令查找当前目录及其所有子目录下所有后缀为“.txt”的文件,并使用`while read`命令逐行读取文件名。然后使用`${file%.txt}.h`来替换原文件后缀为“.h”,并使用`mv`命令将文件重命名为新文件名。
编写shell脚本并执行。请提交脚本代码以及代码解释,实现把当前目录(包含子目录)下所有后缀为“.txt”的文件后缀变更为“.h”。 提示:find,for循环
好的,以下是实现要求的shell脚本代码及解释:
```bash
#!/bin/bash
# 使用 find 命令查找当前目录(包含子目录)下所有后缀为“.txt”的文件
find . -name "*.txt" -type f | while read file; do
# 使用 for 循环对每一个查找到的文件进行后缀变更为“.h”的操作
mv "${file}" "${file%.*}.h"
done
```
解释:
1. `#!/bin/bash`:声明当前脚本使用的是 bash shell;
2. `find . -name "*.txt" -type f`:使用 find 命令查找当前目录(包含子目录)下所有后缀为“.txt”的文件;
- `.`:表示从当前目录开始查找;
- `-name "*.txt"`:指定查找文件名以“.txt”结尾的文件;
- `-type f`:只查找文件类型为普通文件的文件,排除目录等其他类型的文件;
3. `| while read file; do`:将查找到的文件作为参数传递给 while 循环,每次读取一行文件路径到变量 `$file` 中;
4. `${file%.*}.h`:使用 shell 变量替换,将文件后缀名“.txt”替换为“.h”;
- `${file%.*}`:表示截取变量 `$file` 中最后一个“.”号之前的部分,即去掉文件后缀名;
- `.h`:在截取结果的基础上添加后缀名“.h”;
5. `mv "${file}" "${file%.*}.h"`:使用 mv 命令将查找到的文件重命名为新的文件名。其中,`${file}` 表示旧文件名,`${file%.*}.h` 表示新文件名。
这样,执行该脚本后,当前目录及其子目录下所有后缀为“.txt”的文件就会被批量重命名为“.h”。
阅读全文