Linux find 查找文件

在日誌文件夾下判斷是否有web服務器的日誌文件夾,寫了個腳本:

 #!/bin/bash
cd /wls/annuity_acc
for sys in `cat ./WIIServer_name_list.txt`
do
#find /logs/$sys* -name "$sys*" |xargs echo -en '\n' >> 123.txt

 find /logs/$sys* -name "$sys*" -print
done

#find /logs/$sys* -name "$sys*" |xargs echo -en '\n' >> 123.txt

輸出到123.txt,但是如果有多個匹配的情況會出現不換行的情況,如:

ABBSWII6758  ABBSWII6759  ABBSWII6760

annWII3454

gbsWII9876   
想要以下格式輸出到文本:

ABBSWII6758  

ABBSWII6759 

 ABBSWII6760

annWII3454

gbsWII9876 

只想到用-print方法

===============mark   2012-05-04=============

#find /logs/$sys* -name "$sys*" -exec ls -l {} \; >> 123.txt

可以得到列表效果
 

=============find -perm查找  多路徑=============

這兩天碰到一個查找某一路徑下的非777的mdl文件,可以用以下來實現:

find /pamis/data5/cognos/createcubes8/*/mdl -name "*.mdl" -type f |xargs ls -l |grep -v rwx
find /pamis/data5/cognos/createcubes8/*/mdl -name "*.mdl" -type f ! -perm 777 -exec ls -l {} \;

以上兩種得到的效果是一樣的,但是如果要將得到的結果做爲輸入流傳給&2,可能兩者會有差別

find後面的路徑支持多個,但是要以空格隔開,並且路徑支持*?[1-9]這樣的正則表達式:如下:

find /pamis/data5/cognos/createcubes8/*/mdl/[e,g,i,n,p][h,b,o,e][i,s,c,w,t,n]* -name "*.mdl" -type f ! -perm 777 -exec ls -l {} \; >&2

=========find -regex正則表達式查找  多路徑===========

find /home/panzhaobo -name "*.pl" -type f ! -perm 777 -exec ls -l {} \;|xargs echo "" > testmdl.log

find -regex '/home/panzhaobo/.*\.pl' -type f ! -perm 777 -exec ls -l {} \;

上面的-regex是正則表達式後面的參數是帶全路徑的name

 

發佈了18 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章