VASPKIT与量化软件 - Bash Shell
type: channel
link: http://vaspkit.cn/index.php/category/bash/
items: 常用的Shell 脚本实例

常用的Shell 脚本实例
type: item
date: 2023-02-19T22:03:00+08:00
description: 1.自动备份文件或目录： #!/bin/bash # 设置备份目录 backup_dir="/path/to/backup/dir" # 设置要备份的文件或目录 files_to_backup="/path/to/files /path/to/dir" # 创建一个日期时间戳 timestamp=$(date +%F_%T) # 备份文件 tar -czvf "${backup_dir}/backup_${timestamp}.tar.gz" ${files_to_backup} 2.批量重命名文件： #!/bin/bash # 设置文件扩展名 extension=".txt" # 遍历当前目录下的所有文件 for file in *${extension} do # 获取文件名（不包括扩展名） filename=$(basename "${file}" "${extension}") # 重命名文件 mv "${file}" "${filename}_new${extension}" done 3.批量删除文件 #!/bin/bash # 设置文件扩展名 extension=".tmp" # 遍历当前目录下的所有文件 for file in *${extension} do # 删除文件 rm "${file}" done 4.查找并删除指定名称的文件： #!/bin/bash # 设置文件名 filename="example.txt" # 查找并删除文件 find . -name "${filename}" -delete 5.查找并替换文件内容： #!/bin/bash # 设置要查找的字符串 search_string="old_string" # 设置要替换成的字符串 replace_string="new_string" # 查找并替换文件内容 find . -type f -exec sed -i "s/${search_string}/${replace_string}/g" {} \; 6.批量创建文件： #!/bin/bash # 设置文件名前缀 prefix="file" # 设置文件数量 num_files=10 # 循环创建文件 for i in $(seq 1 ${num_files}) do touch "${prefix}${i}.txt" done 7.创建文件夹并移动文件： #!/bin/bash # 设置文件夹名称 dir_name="new_dir" # 设置要移动的文件 files_to_move="file1.txt file2.txt" # 创建文件夹并移动文件 mkdir ${dir_name} && mv ${files_to_move} ${dir_name} 8.在文件夹中查找文件： #!/bin/bash # 设置文件夹路径 dir_path="/path/to/dir" # 设置文件名 filename="example.txt" # 在文件夹中查找文件 find ${dir_path} -name "${filename}" 9.计算文件夹中文件数量： #!/bin/bash # 设置文件夹路径 dir_path="/path/to/dir" # 计算文件数量 num_files=$(find ${dir_path} -type f | wc -l) echo "Number of files in ${dir_path}: ${num_files}" 10.计算文件夹大小： #!/bin/bash # 设置文件夹路径 dir_path="/path/to/dir" # 计算文件夹大小 dir_size=$(du -sh ${dir_path}) echo "Size of ${dir_path}: ${dir_size}" 11.定时执行命令： #!/bin/bash # 设置命令 command="echo hello" # 设置执行周期（以秒为单位） period=10 # 定时执行命令 while true do eval ${command} sleep ${period} done 12.发送邮件： #!/bin/bash # 设置收件人邮箱 to="recipient@example.com" # 设置发件人邮箱 from="sender@example.com" # 设置邮件主题 subject="Test Email" # 设置邮件内容 body="This is a test email." # 发送邮件 echo "${body}" | mail -s "${subject}" -r "${from}" "${to}" 13.批量解压缩文件： …