shell 文件操作總結

目錄

 

一 shell 腳本統計文件個數

二 shell 腳本統計當前目錄下文件名包含特定文件字符的文件

三 shell 腳本判斷文件的大小

四 shell 腳本自動控制文件夾下的文件數量


一 shell 腳本統計文件個數

count=`ls | wc -w`
echo $count

通過count的值就可以判斷文件的個數了

判斷指定目錄下的文件個數:

如/home/test/目錄下:

count=`ls /home/test | wc -w`
 
echo $count


分析:

| 是管道描述符,將ls /home/test的輸出作爲wc -w指令的輸入

wc 是命令,主要用來計算一個文件的行數、單詞數、字符數

-w 表示統計單詞數

-l 表示統計行數

-c 表示統計字節數

-m 表示統計字符數

二 shell 腳本統計當前目錄下文件名包含特定文件字符的文件

比如文件名包含 .log的文件, 命令如下:

FileNum=$(ls -l | grep .log | wc -l)    #查找文件數量

 想要查找包含其他字符, 只需要將 .log 改爲需要的字符即可。

FileNum=$(ls -l | grep <需要的字符> | wc -l)    #查找文件數量

三 shell 腳本判斷文件的大小

#!/bin/sh
filename=media.log
filesize=`ls -l $filename | awk '{ print $5 }'`
maxsize=$((1024*10))
if [ $filesize -gt $maxsize ]
then
    echo "$filesize > $maxsize"
    mv media.log media"`date +%Y-%m-%d_%H:%M:%S`".log
else 
    echo "$filesize < $maxsize"
fi


各個字段的含義:
ls -l $outfile又不是cat $outfile,跟$outfile裏面的內容有什麼關係呢?
ls -l 是列出文件的詳細信息,其中
第1字段是文件屬性字段
第2字段是文件硬鏈接數或目錄子目錄數
第3字段是文件擁有者
第4字段文件擁有者所在的組
第5字段文件文件大小(以字節爲單位)
第6字段文件創建月份
第7字段文件創建日期
第8字段文件創建時間
第9字段文件名 (如果是一個符號鏈接,那麼會有一個 “->” 箭頭符號,後面根一個它指向的文件)

 

四 shell 腳本自動控制文件夾下的文件數量

#!/bin/bash

ReservedNum=10                               #保留文件數量
rm_file_dir='/home/sean/sean/rmfile'         #需要刪除文件的路徑

cd $rm_file_dir                              #進入文件夾
RootDir=$(cd $(dirname $0); pwd)             #當前文件路徑 
FileNum=$(ls -l | grep ^- | wc -l)           #查找文件數量
OldFile=$(ls -rt *.dmp|head -1)              #找出dmp最早文件
if [ $RootDir == $rm_file_dir ];then         #判斷所在目錄是否正確
    echo $RootDir                              
    echo $rm_file_dir
    while (($FileNum>$ReservedNum))           #文件數超過設置變量才執行
    do
    echo "Delete File:"$RootDir'/'$OldFile    #打印要刪除的文件名稱
    rm -f $RootDir'/'$OldFile                 #刪除文件
    let "FileNum--"                           #變量自減操作
    OldFile=$(ls -rt *.dmp|head -1)           #更新dmp最早文件
    done
else
    echo "error file path "                   #所在目錄不對打印出路徑錯誤

fi

上面的代碼只能控制一個文件夾下的所有的文件的數量爲一個特定值,不能限制包含特定字符文件的數量,比如後綴爲.log的文件。

如果,想要控制包含特定字符文件的書數量,需要將其中的代碼進行更改,如下:

FileNum=$(ls -l | grep ^- | wc -l)    #查找文件數量

改爲:

FileNum=$(ls -l | grep .log| wc -l)    #查找文件數量

 

                                                                                                                                                                                                                     

                                                          歡迎掃描左側二維碼,一起學習大數據

                                                                 hadoop, flink 教程正在更新中!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章