一、遍歷文件夾所有文件
#!/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"
遍歷所有目錄和文件可以用於查找某些特定的文件或者目錄,例如查找某些重要文件是否存在於某個目錄下。該操作與遍歷文件夾下所有文件類似,只不過遞歸調用的時候會列印目錄的信息。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/279443.html