本文目录导读:

基础批量修改脚本
#!/bin/bash
# 批量修改文件权限脚本
# 用法: ./chmod_batch.sh <权限> <目录>
# 检查参数
if [ $# -lt 2 ]; then
echo "用法: $0 <权限> <目录>"
echo "示例: $0 755 /path/to/directory"
exit 1
fi
PERMISSION=$1
TARGET_DIR=$2
# 检查目录是否存在
if [ ! -d "$TARGET_DIR" ]; then
echo "错误: 目录 '$TARGET_DIR' 不存在"
exit 1
fi
# 批量修改文件权限
echo "正在批量修改文件权限为 $PERMISSION ..."
find "$TARGET_DIR" -type f -exec chmod "$PERMISSION" {} \;
echo "完成!"
echo "已修改 $(find "$TARGET_DIR" -type f | wc -l) 个文件的权限"
区分文件和目录的脚本
#!/bin/bash
# 批量修改文件和目录权限
# 文件设为644,目录设为755
TARGET_DIR=${1:-.}
if [ ! -d "$TARGET_DIR" ]; then
echo "错误: 目录 '$TARGET_DIR' 不存在"
exit 1
fi
echo "正在处理目录: $TARGET_DIR"
echo "设置文件权限为 644,目录权限为 755"
# 修改文件权限
echo "修改文件权限..."
find "$TARGET_DIR" -type f -exec chmod 644 {} \;
# 修改目录权限
echo "修改目录权限..."
find "$TARGET_DIR" -type d -exec chmod 755 {} \;
# 统计结果
FILE_COUNT=$(find "$TARGET_DIR" -type f | wc -l)
DIR_COUNT=$(find "$TARGET_DIR" -type d | wc -l)
echo "完成!"
echo "已修改 $FILE_COUNT 个文件权限为 644"
echo "已修改 $DIR_COUNT 个目录权限为 755"
带交互确认的脚本
#!/bin/bash
# 交互式批量修改权限脚本
show_help() {
echo "用法: $0 [选项]"
echo "选项:"
echo " -d, --directory 指定目录 (默认: 当前目录)"
echo " -f, --file-perm 文件权限 (默认: 644)"
echo " -D, --dir-perm 目录权限 (默认: 755)"
echo " -r, --recursive 递归修改 (默认启用)"
echo " -y, --yes 自动确认"
echo " -h, --help 显示帮助"
exit 0
}
# 默认值
TARGET_DIR="."
FILE_PERM=644
DIR_PERM=755
RECURSIVE=true
AUTO_YES=false
# 解析参数
while [[ $# -gt 0 ]]; do
case $1 in
-d|--directory)
TARGET_DIR="$2"
shift 2
;;
-f|--file-perm)
FILE_PERM="$2"
shift 2
;;
-D|--dir-perm)
DIR_PERM="$2"
shift 2
;;
-r|--recursive)
RECURSIVE=true
shift
;;
-y|--yes)
AUTO_YES=true
shift
;;
-h|--help)
show_help
;;
*)
echo "未知选项: $1"
show_help
;;
esac
done
# 检查目录
if [ ! -d "$TARGET_DIR" ]; then
echo "错误: 目录 '$TARGET_DIR' 不存在"
exit 1
fi
# 显示将要执行的操作
echo "准备执行以下操作:"
echo "目录: $TARGET_DIR"
echo "文件权限: $FILE_PERM"
echo "目录权限: $DIR_PERM"
echo "递归: $RECURSIVE"
# 确认
if [ "$AUTO_YES" = false ]; then
read -p "是否继续? (y/n): " confirm
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
echo "操作已取消"
exit 0
fi
fi
# 执行修改
echo "正在修改权限..."
if [ "$RECURSIVE" = true ]; then
find "$TARGET_DIR" -type f -exec chmod "$FILE_PERM" {} \;
find "$TARGET_DIR" -type d -exec chmod "$DIR_PERM" {} \;
else
# 仅修改当前目录
for item in "$TARGET_DIR"/*; do
if [ -f "$item" ]; then
chmod "$FILE_PERM" "$item"
elif [ -d "$item" ]; then
chmod "$DIR_PERM" "$item"
fi
done
fi
# 统计结果
FILE_COUNT=$(find "$TARGET_DIR" -type f | wc -l)
DIR_COUNT=$(find "$TARGET_DIR" -type d | wc -l)
echo "操作完成!"
echo "处理目录: $FILE_COUNT 个文件, $DIR_COUNT 个目录"
特定文件类型修改脚本
#!/bin/bash
# 修改特定文件类型的权限
# 只修改 .sh 和 .py 文件
TARGET_DIR=${1:-.}
FILE_EXTENSIONS=("sh" "py" "pl" "rb") # 要处理的文件扩展名
PERMISSION=755 # 设置的可执行权限
echo "正在修改以下类型的文件权限为 $PERMISSION:"
for ext in "${FILE_EXTENSIONS[@]}"; do
echo " *.$ext"
done
for ext in "${FILE_EXTENSIONS[@]}"; do
find "$TARGET_DIR" -type f -name "*.$ext" -exec chmod "$PERMISSION" {} \;
done
# 统计
total=0
for ext in "${FILE_EXTENSIONS[@]}"; do
count=$(find "$TARGET_DIR" -type f -name "*.$ext" | wc -l)
total=$((total + count))
echo "已修改 $count 个 .$ext 文件"
done
echo "总计修改 $total 个文件"
使用方法
-
保存脚本到文件,
chmod_batch.sh -
添加执行权限:
chmod +x chmod_batch.sh -
运行脚本:
# 基本使用 ./chmod_batch.sh 755 /path/to/dir # 或使用交互式脚本 ./chmod_batch_interactive.sh -d /path/to/dir -f 644 -D 755
注意事项
- 运行前建议先备份重要数据
- 使用
-v参数可以查看详细执行过程 - 对于大量文件,建议先在测试目录验证
- 修改系统文件权限需谨慎
这些脚本提供了灵活的批量修改文件权限方案,可以根据实际需求选择或修改使用。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播