看板 Linux 關於我們 聯絡資訊
請教一個迴圈問題 我要寫一個迴圈去比對 /usr/data 資料夾內 第一層目錄底下,任何一個資料夾, 內的檔案數量, 達於36500筆, 必須要記錄 log 並且mail通知 我寫了下面寫法,但是不work #! /bin/sh file=`ls -ald /usr/data/*|awk '{print $9}'` for i in $file do file_count=`ls $i|wc -l|sed 's/ //g'` #計算每個資料夾檔案數 if [ $file_count -gt 36500 ];then echo "$i is $file_count " > /tmp/log.txt #匯出某一個資料夾檔案數量到log #希望顯示某個資料夾,count數是多少 echo "$i is $file_count" | mailx -s "file too big" [email protected] fi done 我覺得上面寫法在讀取每個資料夾 分別計算count 數寫錯 請問這應該要如何修改 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.105.175.49 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1523982583.A.969.html
ckc1ark: 應該是file_count=`ls $i|wc....` ? 04/18 00:33
============ 依照網友說明,我修改完畢了, 我使用sh -vx file.sh 去驗證我寫的每一行字 現在是遇到在計算 $file_count 可以正確計算出來 例如: $file_count 算出來是40000, 但是下一行顯示+[40000 -gt 36500] 下下一行顯示/file_count: [40000 not found 為什麼會卡在這裡呢?? ※ 編輯: zchien (106.105.175.49), 04/18/2018 01:18:11
ddtsatan: if[空格判斷式空格] 04/18 01:42
zchien: 樓上網友的意思是 要怎麼修改呢?? 04/18 02:11
zchien: 我懂意思了,原來我前後少了 空格, 謝謝 04/18 02:16
Bencrie: 是說怎麼不用 find -maxdepth 2 -type f ? 04/18 02:17
上文修正完畢,謝謝大家 ※ 編輯: zchien (106.105.175.49), 04/18/2018 02:23:15
dou0228: 匯出 log 要用 >> 04/18 08:40
dou0228: 不然永遠只有最後一次的資料 04/18 08:40
soem: 你檔案這麼多,ls加上'-U' (do not sort)效能會好一些 04/18 22:09