shell腳本刪除文件
① shell中怎麼刪除文件中指定行的
1、刪除包含指定關鍵字的行:
sed -i '/hello/d' test_temp
[root@host]$ cat test_temp
world
123
4566
889
2、刪除賀態歷指定行號的行
sed -i '閉襪2d' test_temp
[root@host]$ cat test_temp
world
4566
889
3、sed -i '1d' a.txt刪首行
4、sed -i '$d' b.txt刪尾行
5、sed -i 's/[ ]*//g' c.txt刪空格
6、sed -i '/^$/d' d.txt刪空行
7、sed -i 『/love/d』 a.txt刪包含string的行。
(1)shell腳本刪除文件擴展閱讀:
shell 命令
常用命令:
cat 文件名 輸出文件內容到基本輸出(屏幕 or 加>fileName 到另一個文件)
cb 格式化源代碼
chmod //change mode,改變文件的許可權
cp
date 當前的時間和日期
echo $abc 在變數賦值之後,只需在變數前面加一個$去引用.
lint語禪搜法檢查程序
ls dir
man help
more type
查看磁碟空間狀況
ps 查看當前進程狀況
who 你的用戶名和終端類型
定義變數 name=abc? (bash/pdksh) || set name = abc (tcsh)
mkdir 創建目錄
rmdir 刪除目錄
cd 進入目錄
rm 刪除文件
more 顯示文件
echo 顯示指定文本
mv 改文件名 /移動文件
pwd 顯示目錄路徑命令
② shell腳本 怎麼刪除文件夾中的文件
vim rm.sh
#!/bin/bash
find . -type f -exec rm {} \;
會將當前文件夾中的文件全部刪除。請謹慎操作!
③ 用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
#結束
④ shell腳本刪除30天之前日誌
1、新建sh文件
刪除30天以前的文件
#!/bin/bash
find /home/s/server/node1/logs/ -mtime +30 -print | xargs rm -rf
//注釋讓消源-mtime是距離上一次修改時間 -print是只顯示文件 xargs是獲取find查找的結果在通過rm命令刪除
2、部署伺服器
3、設置crontab定時任務
打開定時任務配置文件:crontab -e
定時調用test.sh:* * * * * /home/test.sh
保存退出:按鍵ESC,輸入:wq
第一個* 一小時當中的第幾分鍾 0-59
第二個* 一天當中的第幾小時 0-23
第三個* 一個月當中的第幾天 1-31
第四個* 一年當中的第幾月 1-12
第五個* 一周當中的星期幾 0-7(0和7都代表周日)
* 代表任何時間,比如第一個 * 就代表一小時中的每分鍾都執行
, 代表不連續的時間,比如 0 8,12,16 * * * 代表每天8,12,16點0分執行
- 代坦態表連續的時間范圍,比如0 5 * * 1-6 代表在周一到周六凌晨5點0分執行
*/n 代表每個多久執行一次,比如*/10 * * * *代表每隔10分鍾執行一次
例子:
45 22 * * *
在22點45分執行
0 17 * * 1
在每周1的17點0分執行
0 5 1,15 * *
在每月1號和15號的凌晨5點0分執行
40 4 * * 1-5
在每周一到周五的凌晨4點40分執行
*/10 4 * * *
在每天的凌晨4點,每隔10分鍾執行一次
0 0 1,15 * 1
每月1號和15號,每周1的0點0分都會執行
注意:星期幾和幾號最好不要同時出現,他們的意義都是天,容易混淆
4、查看目前都有那些定時任務
crontab -l
5、備註:
定時任務需要crond服務的支持
1.啟動方法 service crond restart
2.該服務默認是開機啟動的
取消定時任務
1.全部取消 crontab -r
2.取消某個 crontab -e 配置文件,刪除要取消的哪一行配置
若定時任務存在,編輯shell腳本後,不用做任何操作,不放心的話可以啟動腳本看下是否報錯 sh 腳本名橋空字
⑤ 編寫一個shell腳本,刪除當前目錄下空文件
#!/bin/bash
#當前路徑
MYDIR=`dirname"$0"`
#切換到當前路徑
cd"$MYDIR"
#刪除當前文件夾下所有空文件夾
find"$MYDIR"-typed-execrmdir-p{};
#對於文件夾大小大於0的文件夾無效。
#$MYDIR加雙引號可以刪除帶空格的文件夾。
試試看這個代碼。
⑥ shell腳本隔五分鍾清理一次log文件
步驟一:編寫自動清理日誌文件搭慎shell腳本
# vim logAutoClean.sh
#!/bin/bash
log_path="/home/server/core/logs/app"
#目錄存在,刪除修改時間為7天前的文件
if [ -d "${log_path}" ]; then
echo start delete log 7 days ago...
find "${log_path}"/* -name '*.log.gz' -mtime +240 -exec rm -rf {} \;
echo end delete log ...
fi
# :wq! 保存並退出
步驟二:腳本文件授權(可執行許可權)
# chmod +x logAutoClean.sh
測試一下:
# sh logAutoClean.sh
步驟三:創建crontab定時任務
# crontab –e
進入編輯頁面(第一次進入會讓你選擇編輯器,這里我們選擇3[vim.basic]就ok)。
設置每天凌晨1點執行(假定清除腳本在目錄/home/server/core/logs/app下),編輯crontab,增加如下行:
00 01 * * * /home/server/core/logs/app/logAutoClean.sh
可先設置五分鍾執行一次,測試下腳本
*/5 * * * * /home/server/core/logs/app/logAutoClean.sh
如果定時任務不生效,重啟下crond服務
# service crond restart //重啟服務
附錄:crontab用法說明
crontab命令用於安裝、刪除或者列出用於驅動cron後台進程的表格。用戶把需要執行的命令序列放到crontab文件中以獲得執行。
每個用戶都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以知洞敬直接創建或者直接修改。該crontab文件是通過crontab命令創建的
在crontab文件中如何輸入需要執行的命令和時間。該文件中每行都包括六個域,其中前五個域是指定命令被執行的時間,最後一個域是要被執行的命令。
每個域之間使用空格或者製表符分隔。格式如下:
格 式: minute hour day-of-month month-of-year day-of-week commands
合法值: 00-59 00-23 01-31 01-12 0-6 (0 is sunday)
除了數字顫橋還有幾個個特殊的符號就是"*"、"/"和"-"、",",*代表所有的取值范圍內的數字,"/"代表每的意思,"/5"表示每5個單位,"-"代表從某個數字到某個數字,","分開幾個離散的數字。
crontab 命令
-l 在標准輸出上顯示當前的crontab。
-r 刪除當前的crontab文件。
-e 使用VISUAL或者EDITOR環境變數所指的編輯器編輯當前的crontab文件。當結束編輯離開時,編輯後的文件將自動安裝。
⑦ 用shell腳本中刪除某文件夾下的七天之前生成的文件夾
oldDate=$(date-d"-7days""+%Y%m%d")。
cdyourFolder#這里寫你的文件夾路徑。
forfolderin$(ls-d*/)。
do。
[${folder%/*}-lt$oldDate]&&rm-rf$folder。
done。
(7)shell腳本刪除文件擴展閱讀:
打開文本編輯器(可以使用vi/vim命令來創建文件),新建一個文件test.sh,擴展名為sh(sh代表shell),擴展名並不影響腳本執行,見名知意咐梁就好襲租,如果你用php寫shell 腳本,擴展名就用php好拍簡兆了。
輸入一些代碼,第一行一般是這樣:
#!/bin/bashecho"HelloWorld!""#!" 是一個約定的標記,它告訴系統這個腳本需要什麼解釋器來執行,即使用哪一種Shell。
echo命令用於向窗口輸出文本。
⑧ 用shell腳本寫刪除文件的命令
在哪個目錄下即可在在該目錄下執行
find -name "rpm -ql*"| xargs -I {} rm -rf {}
當然也可以加上目錄
find /目錄 -name "rpm -ql*"| xargs -I {} rm -rf {}
⑨ shell腳本怎麼在文件夾內刪除最老的那個文件
1、如果很規律,比如說每天一個,或者每個月一個,你可以按時間刪除,比如每天刪除30天的
例如:
#!/bin/sh
find . -type f -mtime +30 -exec rm -rf {} \;
2、如果每天很多,只刪除最老的一個,你可以按時間排序
ls -rt|head -1就是最老的那個
例如:
#!/bin/sh
ls -rt|head -1|xargs rm -rf