當前位置:首頁 » 編程軟體 » shell刪除腳本

shell刪除腳本

發布時間: 2022-08-08 04:03:06

A. 題目:怎麼用SHELL寫的一個自動刪除文件的腳本

rm_file()
{
find / -type -f -mtime +7 -exec rm {} \;
}

然後把這個函數放入用戶的.bash_profile中去,就可以開機自動刪除一個星期前創建或修改的文件了

如果你是root ,那麼你的.bash_profile文件就在根目錄下中,如果你是普通用戶,那麼這個文件,就在$HOME中
find命令在「/」下查找普通文件,修改時間在7日以內的文件,-exec是來執行命令,rm的,後面的{} \;是-exec執行命令時必須加上的東西

B. 刪除一個文件夾中的文件中含有制定字元的shell腳本

sed '/\/\*/{s#/\*.*\*/##g;t;:1;N;/\*\//!b1;s#/\*.*\*\/##}' file
C語言的注釋格式為:/*...*/,以此為處理參考:
/\/\*/
匹配正則表達式,匹配內容為/*,/和*都需要\來轉義。
匹配後執行:
s#/\*.*\*/##g;t;
將/*...*/替換為空,如果替換成功,則t(在s替換成功後,轉到命令腳本結束,讀取下一行信息)。
#號為替換分隔符,結尾的g表示全局替換,即避免有/*...*/ /*...*/在同一行出現。
這裡面的/不需要轉義(轉義不轉義都可以正確識別),但是*仍然需要\轉義。

若匹配/*,但替換失敗(即/*和*/沒在同一行):
:1
標識一個位置,位置名稱為1。
N;
將這一行保存至模式空間,並讀取下一行。
/\*\//!b1;
若不匹配*/,則命令腳本從:1處開始執行。(之前標識的位置1)
!為/\*\//匹配的否定,b1,轉到:1處。
此處相當於循環,不匹配就一直將文件讀下去,直到匹配*/,此時模式空間的內容大致為:
/* ...
...
...
... */
(若直到文件結束,仍沒有*/出現,在結束後,輸出模式空間的所有內容,即從/*開始,到結束)
匹配*/,不進行b1的操作,進行下一步:
s#/\*.*\*\/##
同上替換,將滿足/*...*/的內容替換為空。
結束。

替換會產生空行,如果想刪除空行,再追加 | sed '/^$/d'

C. shell刪除文件夾腳本怎麼寫,保留2天內的文件夾,2天以前的是直接刪除,每周二、四、六刪一次

1、刪除可以用這樣的方式:
rm -rf $(find ./ -maxdepth 1 -type d -mtime +2)

說明:
./:可修改為你需要的路徑;
-maxdepth 1:為你搜索路徑的最大深度,以你的需求來講,只需要當前目錄處理即可,所以參數可以為1;
-type d:表示只搜索文件夾,如你需要搜索文件,可以不要此參數;
-mtime +2:表示>=2天前修改的記錄。
綜上,find語句返回的值為:搜索當前目錄下,兩天前修改的文件夾。然後將該返回值給rm -rf做參數,即強制刪除這些文件夾。

2、定時任務可以用cron,設定每周二、四、六執行一次以上的shell指令即可。

D. 幫忙寫一個SHELL腳本,linux定時刪除用的

如果刪除/xxx/xxxxxx/xxx/下 3天以前的 所有內容:

find/xxx/xxxxx/xxx/*-mtime+3-execrm-rf{};

如果刪除/xxx/xxxxxx/xxx/下 3天以前的 所有文件(不包含目錄):

find/xxx/xxxxx/xxx/*-typef-mtime+3-execrm-rf{};

如果不刪除MSS目錄 只刪除MSS內的所有 3天以前的文件:

find/xxx/xxxxx/xxx/MSS[0-9]*/*-typef-mtime+3-execrm-rf{};

如果不刪除MSS目錄 但MSS下所有 3天以前的目錄及文件全刪除:

find/xxx/xxxxx/xxx/MSS[0-9]*/*-mtime+3-execrm-rf{};

E. 用shell腳本寫刪除文件的命令

在哪個目錄下即可在在該目錄下執行
find -name "rpm -ql*"| xargs -I {} rm -rf {}

當然也可以加上目錄
find /目錄 -name "rpm -ql*"| xargs -I {} rm -rf {}

F. linux shell 腳本,批量刪除

#!/bin/bash
#此小腳本為方便需要大批量刪除具有相通特徵的用戶(如xuanfei1
xuanfei2
xuanfei3)
read
-p
"請輸入你想要刪除的用戶並指定范圍(如:xuanfei
1
100):"
a
b
c
let
d=$c-$b+1
for((i=1;i<=$d;i++))
do
userdel
$a$b
&&
echo
"已經成功刪除$a$b用戶"
#想徹底刪除用戶所有的資料可添加下條明令
#rm
-rf
/home/$a$b
let
b=b+1
done

G. 編寫一個shell腳本,刪除當前目錄下空文件

#!/bin/bash
#當前路徑
MYDIR=`dirname"$0"`
#切換到當前路徑
cd"$MYDIR"
#刪除當前文件夾下所有空文件夾
find"$MYDIR"-typed-execrmdir-p{};

#對於文件夾大小大於0的文件夾無效。
#$MYDIR加雙引號可以刪除帶空格的文件夾。

試試看這個代碼。

H. 用for循環編寫刪除文件的shell腳本

#!/bin/bash
#2.sh
cd
#進入加目錄
touch
1
#創建文件1
read
-p
"請輸入要刪除的文件
1
:"
file
if
[
"$file"
!=
"1"
];then
echo
"請輸入1
不許輸入別的。謝謝!"
fi
for
i
in
$file
;do
#用for循環把$file代入$i
rm
-rf
$i
#刪除$i
echo
"$i
被刪除了。"
done
#結束

I. shell腳本刪除文件

你說保留兩天的文件,你周二,周四刪除。周二到周四也就兩天。

J. shell定期刪除日誌腳本

腳本如下:

#!/bin/bash
# vim /etc/cron.d/backup
#Author:xxxx
#Date:20140619

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

DIR="/tmp/logs"
file_num=`find $DIR/*.log.* -mtime +1 |wc -l`
echo "have $file_num file"
find $DIR/*.log.* -mtime +1 |xargs rm -rf {} \; >/dev/null 2>&1
====================================================
上面腳本能完成你的要求

一定要照你的腳本寫,沒有測試,你自己修改一下,思路是這樣的。
上面的直接用Find找到文件的修改時間,直接定位文件刪除。

下面這個匹配文件中的名字中包含指定時間的文件,條件為真,刪除。
計算加1.
你自己寫的時間匹配有問題好像。

++++++++++++++++++++++++++++++++++++

tianshu=1
m=0

sj=`date +%Y%m%d -d -${tianshu}day`

for i in `ls *.log.*`
do
echo $i |grep 」$sj「 && rm -f $i
if [ $? = 0 ];then

m++
fi

done
echo $m

熱點內容
安卓收銀軟體哪個好用 發布:2025-02-08 11:01:44 瀏覽:170
實現秘聞存儲的方法 發布:2025-02-08 10:23:33 瀏覽:168
怎麼在微信發文件夾 發布:2025-02-08 10:09:45 瀏覽:795
cryengine源碼 發布:2025-02-08 09:50:58 瀏覽:394
aardio可以反編譯嗎 發布:2025-02-08 09:50:53 瀏覽:484
公司營業執照密碼是什麼 發布:2025-02-08 09:47:56 瀏覽:855
體驗腳本 發布:2025-02-08 09:46:15 瀏覽:691
醫學生需要什麼配置的筆記本 發布:2025-02-08 09:45:34 瀏覽:772
騷擾電話資料庫 發布:2025-02-08 09:45:34 瀏覽:180
u盤文件加密器 發布:2025-02-08 09:40:35 瀏覽:770