用shell脚本写一个批量更改文件.txt后缀为.doc后缀的代码
时间: 2024-03-14 08:44:57 浏览: 77
可以使用循环和mv命令来批量更改文件后缀,以下是示例代码:
```
#!/bin/bash
# 定义文件路径和后缀
path="/path/to/files/"
old_ext=".txt"
new_ext=".doc"
# 循环处理符合条件的文件
for file in ${path}*${old_ext}; do
# 获取文件名(不含后缀)
filename=$(basename "${file}" "${old_ext}")
# 更改后缀并移动文件
mv "${file}" "${path}${filename}${new_ext}"
done
```
将代码保存为扩展名为.sh的文件并运行即可。请注意,此代码更改所有符合条件的文件后缀,因此请谨慎使用。
相关问题
shell批量修改文件后缀
可以使用shell脚本批量修改文件后缀。具体步骤如下:
1. 进入需要修改后缀的文件夹。
2. 编写脚本,使用for循环遍历文件夹中的所有文件,使用mv命令修改文件后缀。
例如,将所有的.txt文件修改为.doc文件,脚本如下:
```
#!/bin/bash
for file in *.txt
do
mv "$file" "${file%.txt}.doc"
done
```
3. 保存脚本并运行,即可批量修改文件后缀。
编写一个Linux shell脚本,每小时自动备份所有用户编辑过的文档(后缀是.doc,.docx,.c,.cpp,.txt,这些后缀信息可以由用户指定),放到一个目录,此目录可以由用户方便指定,不重复备份。(50分)
以下是一个简单的Linux shell脚本示例,可以满足基本要求:
```shell
#!/bin/bash
# 用户指定需要备份的文件后缀,多个后缀用空格分隔
suffix=".doc .docx .c .cpp .txt"
# 用户指定备份目录
backup_dir="/path/to/backup/dir"
# 获取当前时间
date=$(date +%Y%m%d%H%M%S)
# 遍历所有用户的home目录下的文件,找出需要备份的文件
for user_dir in /home/*; do
# 如果home目录下的文件夹不是用户自己的目录,则跳过
if [[ ! -d "$user_dir" || $(basename "$user_dir") == "lost+found" ]]; then
continue
fi
# 遍历用户目录下的所有文件,找出需要备份的文件
for file in "$user_dir"/*; do
if [[ ! -f "$file" ]]; then
continue
fi
# 如果文件后缀不在用户指定的后缀列表中,则跳过
if [[ "${suffix[@]}" != *"$(echo "${file##*.}" | tr '[:upper:]' '[:lower:]')"* ]]; then
continue
fi
# 获取文件的md5值
md5=$(md5sum "$file" | cut -d ' ' -f 1)
# 如果这个md5值已经备份过了,则跳过
if [[ -f "$backup_dir/$md5" ]]; then
continue
fi
# 备份文件
cp "$file" "$backup_dir/$date-$md5"
done
done
```
这个脚本会在每个小时的第1分钟备份所有用户编辑过的文档,备份文件的命名格式为`时间戳-md5值`,如果同一个文件已经备份过了,则不会重复备份。用户可以在脚本中指定备份目录和需要备份的文件后缀。
阅读全文