shell递归遍历目录中的所有文件、文件夹

因为需求的变化,线上资源需要批量更新,现在将遍历目录中的文件及文件夹的方法记录一下,免得忘记。

知识点
  • $( ls - l )
    • 执行命令,获取命令行结果
  • ${val}
    • 使用之前的变量,等同于 $val ,花括号只是起到告知解释器变量边界的作用
  • $1
    • 参数传递
#!/bin/bash
# ====================================================
#   Copyright (C)2020 All rights reserved.
#
#   Author        : 
#   Email         : [email protected]
#   File Name     : traverse.sh
#   Last Modified : 2020-06-04 14:17
#   Description   :
#
# ====================================================

function lm_traverse_dir(){
	#for file in $(ls $1)		#与下面一行等价
    for file in `ls $1`       	#注意两个反引号,获取命令执行的结果
    do
        if [ -d $1"/"$file ]  	#"-d" 判断是否为目录,注意此处之间一定要加上空格,否则会报错
        then
            lm_traverse_dir $1"/"$file	#遍历子目录
        else  
            # 可以在这里处理文件,比如改名、删除等
            effect_name=$1"/"$file		#注意"="前后不要留空格
            echo $effect_name			#输出文件名 
            rm -rf $effect_name
            mv $effect_name "new_name"
        fi
    done
}   

# 执行命令
lm_traverse_dir $1
Reference:
  1. Shell 基本运算符
  2. Shell 传递参数
  3. Shell 中的中括号用法总结

猜你喜欢

转载自blog.csdn.net/zxcasd11/article/details/106557671
今日推荐