Shell比較測試 查詢 結合xargs

2021-09-14 04:53:59 字數 3645 閱讀 6541

var=2; var2=2

# var不等於0 and var2大於2 是返回:it is true;否返回:it is false

[$var -ne 0 -a $var2 -gt 2 ]

&&echo

"it is true"

||echo

"it is false"

;## it is false

# var不等於0 或 var2大於2 是返回:it is true;否返回:it is false

[$var -ne 0 -o $var2 -gt 2 ]

&&echo

"it is true"

||echo

"it is false"

;## it is true

str1=''[

[ -z $str1]]

&&echo

'str1 is blank'

||echo

'str1 is not blank';[

[ -n $str1]]

&&echo

'str1 is not blank'

||echo

'str1 is blank'

;

""

"-gt 大於

-lt 小於

-ge 大於或等於

-le 小於或等於

-a 是邏輯與操作符 -o 是邏輯或操作符

[[ -z $str1 ]] # 為空串返回真

[[ -n $str1 ]] # 不是空返回真

"""

fpath=

"./test.sh"

[ -e $fpath]&&

echo file exists ||

echo file not exists;

## 或者

if[ -e $fpath];

then

echo file exists;

else

echo file not exists;

fi

""

"[ -f $file_var ] 包含正常的檔案路徑或檔名,則返回真

[ -x $var ] 包含的檔案可執行,則返回真

[ -d $var ] 包含的檔案時目錄,則返回真

[ -e $var ] 包含的檔案存在,則返回真 *****

[ -c $var ] 包含的檔案是乙個字元裝置檔案的路徑,則返回真

[ -b $var ] 包含的檔案是乙個塊裝置檔案的路徑,則返回真

[ -w $var ] 包含的檔案可寫,則返回真

[ -r $var ] 包含的檔案可讀,則返回真

[ -l $var ] 包含的是乙個符號鏈結,則返回真

"""

find

. -type f -print0 |

xargs -0 ls

## 檢視當前檔案下的所有檔案(包含檔案中的檔案)

# 1 正則

## 檔名中有 out 和 txt 的檔案

find

. \( -name '*txt' -a -name "out*" \) -print

## 忽略大小查詢 .px 結尾的檔案

find

. -iregex '.*\.p.$'

# -iregex 忽略大小寫

## 否定查詢

find

.! -name "*.txt" -print

# 2 目錄深度: 查詢1-2層目錄中全部.sh 檔案

find

. -maxdepth 2 -name "*.sh" -print

### 找出7天內有修改的檔案(當前資料夾)

find

. -maxdepth 1 -type f -mtime -7 -print

基於檔案型別&使用時間進行搜尋的時候,務必要先限制搜尋檔案的範圍,不然會全部遍歷

其他命令解釋

""

"基於檔案型別的搜尋

find -type f -print

f 普通檔案

l 符號鏈結

d 目錄

c 字元裝置

b 塊裝置

s 套接字

p fifo"""

"""基於時間戳的搜尋

find -type f -atime -7 -print

--- 天

-atime 使用者最近一次訪問檔案的時間

-mtime 檔案內容最後一次被修改的時間

-ctime 檔案元資料最後一次改變的時間

--- 分鐘

find -type f -amin -7 -print

-amin

-mmin

-cmin

-newer

find . -type f -newer file.py -print #比file.py 修改時間更近的所有檔案

"""

# 在s**件裡找到 有 fo 的一行

ls *.sh |

xargs

grep fo

cat example.txt """

11 12 14

1 2 3 4 7"""

# 1、將多行轉換成1行

cat example.txt |

xargs

### >> 11 12 14 1 2 3 4 7

# 2、將一行轉化成3行

cat example.txt |

xargs -n 3"""

11 12 14

1 2 3

4 7"

""# 3、 分割&分行

echo

"fenxgexfenxhang"

|xargs -d x -n 2

### -d 以哪個字元分割 -n 每行包含多少字元"""

fen ge

fen hang

"""

# 將包含換行符或空白符的檔案傳給xargs

## 其中使用grep 找出內容中不含 image的檔案

find

. -maxdepth 1 ! -name "*.docx" -print0 |

xargs -0 grep -l image

## 1、結合find使用xargs批量刪除

find

. -type f -name "*.txt" -print |

xargs

rm -f

### 使用 -print0 將間隔用 \0表示

find

. -type f -name "*.txt" -print0 |

xargs -0 rm -f

## 2、統計源**目錄中所有sh程式檔案的行數

find

. -type f -name "*.sh" -print0 |

xargs -0 wc -l

Shell 測試比較

檔案狀態測試 b filename 當filename 存在並且是塊檔案時返回真 返回0 c filename 當filename 存在並且是字元檔案時返回真 d pathname 當pathname 存在並且是乙個目錄時返回真 e pathname 當由pathname 指定的檔案或目錄存在時返回...

Shell基礎之 變數 比較 測試

一 變數 環境變數 位置變數 預定義變數 1 環境變數 env 檢視環境變數2 位置變數 vi location.sh bin bash sum expr 1 2 echo 1 2 sum location 12 34 則12為第乙個位置變數賦值為 1,32為第二個為 2。location為預定義變...

Shell指令碼的條件測試與比較

shell指令碼的條件測試與比較 一 shell指令碼的條件測試 通常,在bash的各種條件結構和流程控制結構中都要進行各種測試,然後根據測試結構執行不同的操作,有時也會與if等條件語句相結合,來完成測試判斷,以減少程式執行的錯誤。執行條件測試表示式後通常會返回 真 或 假 就行執行命令後返回的值為...