我正在嘗試通過腳本獲取目錄中幾個檔案的行數。到目前為止,我可以使用 if/else 陳述句執行此操作,但是我正在為每個檢查的檔案獲取輸出。我的目標是獲得一個“主要”輸出:
- 如果所有輸出都是“OK” ->> 主輸出將是“OK”
- 如果甚至輸出之一是“問題”->> 主輸出將指示錯誤。
files=`find /backup/external/logs -type f -daystart -ctime 0 -print | grep csv | grep -v Collateral`
count_files=`echo $files | grep -o " " | wc -l`
count_files=$((count_files 1))
for ((i=1;i<=${count_files}; i ));
do
file=`echo $files | awk -F " " -v a=$i '{ print $a }'`
linecount=`(wc -l "$file"| awk '{print $1}')`
if [ $linecount -gt "1" ]; then
echo "OK"
else
echo "PROBLEM! File $file"
fi
done
我的輸出是:
PROBLEM! File /backup/external/logs/log1_20211214010002.csv
PROBLEM! File /backup/external/logs/log2_20211214010002.csv
OK
PROBLEM! File /backup/external/logs/log4_20211214010002.csv
OK
PROBLEM! File /backup/external/logs/log6_20211214010002.csv
uj5u.com熱心網友回復:
將有問題的檔案累積在一個變數中。
problems=""
for ((i=1;i<=${count_files}; i ));
do
file=`echo $files | awk -F " " -v a=$i '{ print $a }'`
linecount=`(wc -l "$file"| awk '{print $1}')`
if [ $linecount -le 1 ]; then
problems ="$file "
fi
done
if [ "$problems" ] ; then
echo Problems: "$problems"
fi
uj5u.com熱心網友回復:
似乎您想報告檔案名不包含“Collat??eral”的 csv 檔案,這些檔案正好有零或一行。如果是這樣,您就不需要這么復雜的腳本;這一切都可以通過一個find命令來完成:
find /backup/external/logs -type f -daystart -ctime 0 \
-name '*.csv' \! -name '*Collateral*' \
-exec bash -c '{ read && read || echo "PROBLEM! File $1"; } < "$1"' _ {} \;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/382644.html
上一篇:nodejs如何找到行程ID
