Linux脚本练习之script008-将个人用户下任意目录下所有文件的扩展名改为 `.bak`。

Posted 二木成林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux脚本练习之script008-将个人用户下任意目录下所有文件的扩展名改为 `.bak`。相关的知识,希望对你有一定的参考价值。

script008

题目

将个人用户下任意目录下所有文件的扩展名改为 .bak

分析

本题考查的知识点:

  • 自定义函数
  • 变量和局部变量
  • find 命令
  • grep 命令
  • for...in 循环语句
  • $
  • mv 命令

思路:

  • 找到指定目录下的所有普通文件,注意排除目录和隐藏文件。
  • 循环遍历所有普通文件路径,通过 $ 提取文件路径但去处后缀。如 /home/zhangsan/hello.txt 得到 /home/zhangsan/hello
  • 然后对每个文件进行重命名。

脚本

#!/bin/bash

####################################
#
# 功能:将个人用户下任意目录下所有文件的扩展名改为 .bak。
#
# 使用:直接执行,无须任何参数。
#
####################################

# 声明变量
# 起始目标目录,即用户的家目录
DEST_DIR="/home/zhangsan"
# 改变后的文件后缀名
DEST_SUFFIX=".bak"

##
# 修改指定目录下所有文件的扩展名
##
function change_extension_name() 
  # 获取指定目录下的所有普通文件
  local files=$(find "$DEST_DIR" -type f | grep -v "/\\\\.")
  # 循环遍历所有找到的文件路径
  for file in $files ; do
      # 获取文件除了后缀名前面的内容,如 /home/zhangsan/hello.txt 得到 /home/zhangsan/hello
      local prefix="$file%.*"
      # 对文件进行重命名
      mv "$file" "$prefix$DEST_SUFFIX"
  done


##
# 主函数
##
function main() 
  # 在主函数中调用
  change_extension_name


# 调用主函数
main

测试

执行 ./script008.sh 启动脚本:

以上是关于Linux脚本练习之script008-将个人用户下任意目录下所有文件的扩展名改为 `.bak`。的主要内容,如果未能解决你的问题,请参考以下文章

Linux脚本练习之script015-实现禁止和允许普通用户登录系统。

Linux脚本练习之script025-判断用户输入的参数是否为正整数。

Linux脚本练习之script037-打印无密码用户。

Linux脚本练习之script038-统计一共有多少个普通用户。

Linux脚本练习之script024-判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)。

Linux脚本练习之script032-任意用户登录系统时,显示红色字体的警示提醒信息 `Hi, dangerous!`。