shellforin文件夾
① shell怎麼遍歷一個文件夾下所有文件
# find . -type f
./a
./normal/log-1
./normal/log-2
./normal/log-3
通過find找到文件
那麼遍歷就用循環
for i in `find . -type f`
do
echo $i
done
② 用shell腳本中刪除某文件夾下的七天之前生成的文件夾
oldDate=$(date-d"-7days""+%Y%m%d")。
cdyourFolder#這里寫你的文件夾路徑。
forfolderin$(ls-d*/)。
do。
[${folder%/*}-lt$oldDate]&&rm-rf$folder。
done。
(2)shellforin文件夾擴展閱讀:
打開文本編輯器(可以使用vi/vim命令來創建文件),新建一個文件test.sh,擴展名為sh(sh代表shell),擴展名並不影響腳本執行,見名知意咐梁就好襲租,如果你用php寫shell 腳本,擴展名就用php好拍簡兆了。
輸入一些代碼,第一行一般是這樣:
#!/bin/bashecho"HelloWorld!""#!" 是一個約定的標記,它告訴系統這個腳本需要什麼解釋器來執行,即使用哪一種Shell。
echo命令用於向窗口輸出文本。
③ Shell獲取某目錄下所有文件夾的名稱
方法有三,如下:
④ 請教大神shell的for in語句中怎麼使用多個變數
1、遍歷按空格分隔的字元串:
#!/bin/bash
servers="abc123 das 222"
for server in$servers
do
echo$server
done
2、遍歷字元串列表、用空格分隔:
#!/bin/bash
for server in a b c
do
echo$server
done
3、遍歷參數列表:
#!/bin/bash
for arg in $*
do
echo$arg
done
4、遍歷文件目錄:
#!/bin/bash
for i in ~/*.sh
do
echo$i
cat$i
done
註:$i是整個目錄和文件,for in語句也可以與` `和$( )配合使用,例如:
#!/bin/bash
for i in $(ls~/*.sh)
do
echo$i
cat$i
done
(4)shellforin文件夾擴展閱讀:
LInux shell之(for in)用法總結
一、語法
for 變數名 in 列表 do 程序段(command) done
注意1:是變數名而不是$變數!
注意2:列表可以做文章!
二、應用
第一類:數字性循環-->seq在in後面的應用
#!/bin/bash
#也是產生等差數列-->默認是1
for i in $(seq 1 10)
#產生的是一個字元串,默認IFS是以空格隔開!
do
echo $(expr $i * 3 + 1);
#主要是復習:expr乘法的特殊用法!-->空格隔開
done
補充:產生[1,10]的自然數-->{}在in後面的應用
total=0
#全局變數for i in {1..100} #".."表示連續,默認也是IFS為空格隔開
do
((total+=i))
doneecho -e "total is:${total}"
#多行注釋
<<COMMENRfor i in mysql_{0,1,4,12}sql
#多個文件
do
echo $i
samtools view -c $i
doneCOMMENT
第二類:字元性循環
最原始的
#!/bin/bash
#使用列表for循環顯示周一到周日對應的英文-->學習日期的英文
for day in Monday Tuesday Wednesday Thursday Friday Saturday Sunday
do
echo "$day"
done
變數的類型
#!/bin/bash
list="Linux Java C++ Python"
for
i in $list
do
echo -e "Language is ${i}"
done
cat
在in後面的應用-->逐行讀取文件的內容(默認是IFS),所以不是逐行列印。
#!/bin/bashfor
in $(cat 日誌顏色.sh)
#注意:pwd當前目錄下的文件
do
echo $i
done
第三類:路徑查找
ls在in後面的命令是-->讀取當前pwd下的文件(廣義上)。
#!/bin/bash
for i in `ls`;
#ls可以結合統配符應用
do
echo $i is file name! ;
#注意:的應用
done
用通配符讀取目錄(無命令)
for
file in ~/*;
#一級目錄下的內容-->並不遞歸顯示
do
echo $file is file path ! ;
#${file}代表的是文件的全路徑
done
通過腳本傳參
#!/bin/bash
#回憶1:統計腳本參數的個數echo "argument number are $#"!
#回憶2:參數的內容-->此處可以換成$@來測試!
echo
"the input is $*"
#循環執行
for argument in "$*";
do
echo
"$argument "
done