shell腳本for循環實現文件和目錄遍歷

一個for循環實現一個目錄下的文件和目錄遍歷,很實用

[root@localhost shell_order]# cat test27.sh 
#!/bin/bash
#print the directory and file
 
for file in /home/hustyangju/*
do
if [ -d "$file" ]
then 
  echo "$file is directory"
elif [ -f "$file" ]
then
  echo "$file is file"
fi
done
[root@localhost shell_order]# ./test27.sh 
/home/hustyangju/array is directory
/home/hustyangju/menuwindow-7.12 is directory
/home/hustyangju/menuwindow-build-desktop is directory
/home/hustyangju/shell_order is directory
[root@localhost shell_order]# 

遞歸遍歷

#! /bin/bash
read_dir(){
    for file in `ls $1`       #註意此處這是兩個反引號,表示運行系統命令
    do
        if [ -d $1"/"$file ]  #註意此處之間一定要加上空格,否則會報錯
        then
            read_dir $1"/"$file
        else
            echo $1"/"$file   #在此處處理文件即可
        fi
    done
}
#讀取第一個參數
read_dir $1

補充:Shell遍歷目標目錄和子目錄下的所有文件

1.編寫代碼

#!/bin/bash
 
function getdir(){
    for element in `ls $fd`
    do  
        dir_or_file=$fd"/"$element
        if [ -d $dir_or_file ]
        then 
            getdir $dir_or_file
        else
            echo $dir_or_file
        fi  
    done
}
root_dir="/opt/datas"
getdir $root_dir

2.參數

  • -e 判斷對象是否存在
  • -d 判斷對象是否存在,並且為目錄
  • -f 判斷對象是否存在,並且為常規文件
  • -L 判斷對象是否存在,並且為符號鏈接
  • -h 判斷對象是否存在,並且為軟鏈接
  • -s 判斷對象是否存在,並且長度不為0
  • -r 判斷對象是否存在,並且可讀
  • -w 判斷對象是否存在,並且可寫
  • -x 判斷對象是否存在,並且可執行
  • -O 判斷對象是否存在,並且屬於當前用戶
  • -G 判斷對象是否存在,並且屬於當前用戶組
  • -nt 判斷file1是否比file2新  [ “/data/file1” -nt “/data/file2” ]
  • -ot 判斷file1是否比file2舊  [ “/data/file1” -ot “/data/file2” ]

3.測試

測試結果:打印出來瞭目標目錄以及子目錄下的所有文件

 

到此這篇關於shell腳本for循環實現文件和目錄遍歷的文章就介紹到這瞭,更多相關shell文件和目錄遍歷內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: