一、遍历文件夹所有文件
#!/bin/bash # 遍历文件夹下所有文件 function list_files(){ # 获取传入参数的文件路径 local file_path=$1 #遍历文件夹 for file in ${file_path}/* do #如果是目录则递归调用函数,否则打印文件路径 if [ -d $file ] then list_files $file else echo $file fi done } #调用函数,传入文件夹路径 list_files "/path/to/folder"
遍历文件夹下所有文件,是shell中经常使用的一个操作。该操作是通过递归方式实现,对于目录进行递归(调用自身),对于文件则直接输出文件路径。递归遍历目录下所有文件,类似于树的数据结构遍历操作。
二、Shell获取目录下所有文件名
#!/bin/bash # 获取目录下所有文件名到数组中 function get_files(){ local file_path=$1 local file_list=($(ls ${file_path})) echo ${file_list[@]} } #调用函数,传入文件夹路径 get_files "/path/to/folder"
获取目录下所有文件名是shell开发中实现某些操作的先决条件之一,例如文件拷贝、文件压缩等等。该操作是通过调用ls命令,将返回结果赋值给数组变量,实现的。
三、Shell遍历所有目录和文件
#!/bin/bash # 遍历文件夹下所有文件和目录 function list_files(){ # 获取传入参数的文件路径 local file_path=$1 #遍历文件夹 for file in ${file_path}/* do #如果是目录则递归调用函数,否则打印文件路径 if [ -d $file ] then echo "directory: "$file list_files $file else echo "file: "$file fi done } #调用函数,传入文件夹路径 list_files "/path/to/folder"
遍历所有目录和文件可以用于查找某些特定的文件或者目录,例如查找某些重要文件是否存在于某个目录下。该操作与遍历文件夹下所有文件类似,只不过递归调用的时候会打印目录的信息。