Shell腳本實(shí)現(xiàn)一鍵快速搞定系統(tǒng)集成異常文件(附全部源碼)
1. 背景描述
最近在和別的系統(tǒng)做數(shù)據(jù)集成的時(shí)候,遇到異常截?cái)?/strong>或同步錯(cuò)誤的情況。 pdf,doc,txt等附件在Linux服務(wù)器 為了從數(shù)千個(gè)文件中快速鎖定這些“害群之馬”文件,我寫了一個(gè)自動(dòng)化腳本。 這個(gè)腳本,能夠滿足以下三個(gè)條件: 下面是編寫了的為 check_files.sh 的腳本。 創(chuàng)建腳本文件: 賦予執(zhí)行權(quán)限: 運(yùn)行腳本: 進(jìn)行查看結(jié)果: 只查看異常文件: 統(tǒng)計(jì)異常數(shù)量: 在腳本中,我們使用了字節(jié)區(qū)間判斷: 這是因?yàn)樵?Linux 中, 相比于 腳本最后使用了 與系統(tǒng)做集成的,一定要用這個(gè)腳本自己查一下,不然推過(guò)來(lái)的數(shù)據(jù),用的時(shí)候,有問(wèn)題,真的是愁死人啊! 通過(guò)這個(gè)簡(jiǎn)單的 Shell 腳本,我們將枯燥的人肉搜索轉(zhuǎn)變?yōu)榫珳?zhǔn)的自動(dòng)化審計(jì)。 到此這篇關(guān)于Shell腳本實(shí)現(xiàn)一鍵快速搞定系統(tǒng)集成異常文件(附全部源碼)的文章就介紹到這了,更多相關(guān)Shell腳本清理異常文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!/data/fileFtp 目錄,發(fā)現(xiàn)大量文件大小為 10KB,或者更小的的文件。這往往不是巧合,而是集成系統(tǒng)推過(guò)來(lái)的數(shù)據(jù)有問(wèn)題,給過(guò)來(lái)的數(shù)據(jù)看著是“xxxx.pdf”,而文件大小只有幾KB,并且這個(gè)文件打開提示文件是損壞的?。?/p>

2. 這個(gè)腳本的作用

3. 腳本實(shí)現(xiàn):check_files.sh
#!/bin/bash
# 配置要掃描的根目錄
TARGET_DIR="/data/fileFtp"
# 定義輸出結(jié)果文件,加入時(shí)間戳防止覆蓋
LOG_FILE="check_results_$(date +%Y%m%d).log"
echo "開始掃描: $TARGET_DIR ..."
{
echo "=========================================================================="
echo " 掃描報(bào)告 | 目錄: $TARGET_DIR | 生成時(shí)間: $(date '+%Y-%m-%d %H:%M:%S')"
echo "=========================================================================="
printf "%-12s | %-12s | %-20s | %s\n" "掃描檢查結(jié)果" "大小" "修改時(shí)間" "路徑"
echo "--------------------------------------------------------------------------"
# 使用 find 尋找所有文件
find "$TARGET_DIR" -type f | while read -r file; do
# 獲取字節(jié)大小
size_bytes=$(stat -c%s "$file")
# 獲取人類直觀大小 (如 10K)
size_human=$(ls -lh "$file" | awk '{print $5}')
# 獲取修改時(shí)間 (yyyy-mm-dd hh:mm:ss)
mtime=$(stat -c%y "$file" | cut -d'.' -f1)
# 邏輯判斷:如果文件在 9k-10k 之間 (Linux find 邏輯)
if [ "$size_bytes" -ge 9216 ] && [ "$size_bytes" -le 10240 ]; then
status="[ ISSUE ]"
else
status="[ OK ]"
fi
printf "%-12s | %-12s | %-20s | %s\n" "$status" "$size_human" "$mtime" "$file"
done
} > "$LOG_FILE"
echo "掃描完成!報(bào)告已生成: $LOG_FILE"
4.如何使用該腳本
vi check_files.sh (將上面的代碼粘貼進(jìn)去并保存退出)。
chmod +x check_files.sh
./check_files.sh
cat check_results_20260210.log

grep 'ISSUE' check_results_20260210.log
grep -c 'ISSUE' check_results_20260210.log
5. 關(guān)鍵技術(shù)點(diǎn)深度解析
A. 文件狀態(tài)的判斷邏輯
if [ "$size_bytes" -ge 9216 ] && [ "$size_bytes" -le 10240 ];
find -size 10k 實(shí)際上匹配的是 9KB 到 10KB 之間的數(shù)據(jù)。通過(guò)手動(dòng)設(shè)定字節(jié)范圍,我們可以更精確地控制“可疑”的定義。B.stat命令的高效利用
ls 命令,stat 是專門用來(lái)獲取文件元數(shù)據(jù)的工具。stat -c%s:直接獲取文件字節(jié)數(shù),方便進(jìn)行數(shù)學(xué)比較。stat -c%y:獲取高精度的修改時(shí)間。C. 重定向與格式化輸出
{ ... } > "$LOG_FILE"。這種寫法將整個(gè)代碼塊的 stdout(標(biāo)準(zhǔn)輸出)一次性重定向到文件中,比在每一行后面寫 >> 要優(yōu)雅且高效得多。
相關(guān)文章
bash腳本如何監(jiān)控cup/內(nèi)存/磁盤使用率
本文主要介紹了bash腳本如何監(jiān)控cup/內(nèi)存/磁盤使用率,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Shell獲取當(dāng)前正在執(zhí)行腳本的絕對(duì)路徑
本文主要介紹了Shell獲取當(dāng)前正在執(zhí)行腳本的絕對(duì)路徑,主要有三種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
詳解Linux查找目錄下的按時(shí)間過(guò)濾的文件
這篇文章主要介紹了Linux查找目錄下的按時(shí)間過(guò)濾的文件 ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05

