linux 刪除最舊的檔案

2021-09-25 17:01:05 字數 2937 閱讀 9407

由於使用paas,利用jenkins工具生成的映象檔案很多。

support同事每次都會要求我們刪除比較舊的映象,只保留最新的5個。

上網找了一下,終於找到乙個大神整理的【ref: 

參考後寫了乙個自己的

#!/bin/bash

#不同專案的映象檔案的名稱不同

filenames[0]='20190725*'

filenames[1]='201908*'

path='/home/wasup/temp/tmp/'

for filename in $;

do#拼接檔案路徑

releasepath=$$

cd $

#判斷目錄是否存在

if [ $? -eq 0 ];

then

echo $path

echo "contains file:"

echo $

#輸出所有內容

echo *

num=`ls -l $ | grep '^-' | wc -l`;

if [ $num -gt 5 ];

then

#計算超過5個多多少

num=`expr $num - 5`

clean=`ls -tr $ | head -$num | xargs`

echo "will delete file:"

echo $

#-n1 每次處理乙個檔案

ls -tr $ | head -$num | xargs -i -n1 rm -rf {}

fifi

done

前言

因為公司的檔案伺服器上存有所需的專案war包,一段時間以後,大量不用的工程檔案占用磁碟空間,需要定期刪除無用的檔案。這些檔案歸屬不同的專案目錄下,建立的時間各不相同。某些陳舊專案已經數年沒有更新。因此,不能只定期刪除某個目錄下的檔案,更不能按時間刪除多少天以前的檔案。下面話不多說了,來一起看看詳細的實現過程吧。

推進

完工

#!/bin/bash

#不同的專案有不同的路徑

#專案的主幹目錄是相同的

for path in $;

do #拼接檔案路徑

releasepath=$$

cd $releasepath

#判斷是否存在該目錄

if [ $? -eq 0 ];

then

echo $releasepath

echo "contains file:"

#輸出所有的內容

echo *

num=`ls -l | grep '^d' | wc -l`;

#判斷資料夾的數量是否超過5個(我只想保留最新的5個資料夾)

if [$num -gt 5 ];

then

#計算超過5個多少

num=`expr $num - 5`

clean=`ls -tr | head -$num | xargs`

echo "will delete file:"

echo $

#-n1 每次處理1個檔案

ls -tr | head -$num | xargs -i -n1 rm -rf {}

fifidone

完善

實際部署時,覺得直接刪除檔案不妥,應該是先備份到某一目錄,再次執行指令碼的時候,刪除上次備份的檔案。

#!/bin/bash

#清空備份檔案

backup="/tmp/storage/"

cd $backup

if [ $? -eq 0 ];

then

rm -rf *

fi#清除超過5個檔案之外最老的那些檔案

for path in $;

do releasepath=$$

cd $releasepath

if [ $? -eq 0 ];

then

echo $releasepath

echo "contains file:"

echo *

num=`ls -l | grep '^d' | wc -l`;

if [$num -gt 5 ];

then

num=`expr $num - 5`

clean=`ls -tr | head -$num | xargs`

echo "will delete file:"

echo $

#把檔案移動到備份檔案夾更安全

ls -tr | head -$num | xargs -i -n1 mv {} $backup

fifidone

自動化處理

將上述指令碼儲存為removecode.sh,然後新增crontab。 

crontab -e
0 0 1 * * /opt/project/removecode.sh > /opt/project/remove.log 2>&1 &

linux實現自動刪除最舊的幾個檔案詳解

前言 因為公司的檔案伺服器上存有所需的專案war包,一段時間以後,大量不用的工程檔案占用磁碟空間,需要定期刪除無用的檔案。這些檔案歸屬不同的專案目錄下,建立的時間各不相同。某些陳舊專案已經數年沒有更新。因此,不能只定期刪除某個目錄下的檔案,更不能按時間刪除多少天以前的檔案。下面話不多說了,來一起看看...

Linux檔案刪除

linux是通過link的數量來控制檔案刪除的,只有當乙個檔案不存在任何link的時候,這個檔案才會被物理的刪除。那麼這個link是什麼呢?就需要了解軟連線和硬鏈結。linux具有為乙個檔案起多個名字的功能,稱為鏈結。被鏈結的檔案可以存放在相同的目錄下,但是必須有不同的檔名,而不用在硬碟上為同樣的資...

刪除linux的亂碼檔案

當發現linux 裡有中文命名檔案,亂碼檔案想刪除時,請使用inode 刪除 root localhost tmp ls l total 1024 r r r 1 root root 624541 may 3 09 33 mkisofs 2.01 10.7.el5.x86 64.rpm srwxrw...