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!
推薦閱讀:
- shell 流程控制語句的具體使用
- 詳解Shell if else語句的具體使用方法
- Shell獲取當前正在執行腳本的絕對路徑
- linux shell 編程之函數使用詳解
- 隱藏shell腳本內容的工具 shc詳解