判斷副檔名嗎?

用 awk -F. '{print $NF}' 阿

取出檔案名稱 用basename
該檔案有沒有存在用if 和 -f
根據你的敘述,應該是檔案存在就不繼續備份。
看一下... 小試到 1-2 吃飯去~

1.
dd if=/dev/zero of=/var/log/test.log bs=1M count=2

2.
#!/bin/sh
a=`date +%Y-%m-%d-%H-%M`
(a變數,格式是 年-月-日-時-分)
echo $a >> /var/log/log_manager.log
(先將時間變數累加到log_manager.log)
find /var/log -name "*.log" -exec ls -l {} \; >> /var/log/log_manager.log
(搜尋log 檔 , 然後用ls 方式印出內容累加到 log_manager.log)
find /var/log -name "*.log" -size +2048 -exec cp {} {}.$a \;
(搜尋大於 2048檔案,然後執行 cp 指令)

3. 還沒想....^^"
"如果發現掛載磁碟已經有之前備份相同大小的同檔案,則不做備份" 掛載 看不懂?
4. cron 很好放. 執行crontab -e 去改就好了
*/3 * * * * 作業.sh
jack456 wrote:
看一下... 小試到...(恕刪)


這
太過高深了
不知道能不能請教如何用簡單的語法寫出來@@
隱約看懂
但是很多又不知道意思
連排列順序也很疑惑...
jack456 wrote:
看一下... 小試到...(恕刪)


那應該是指
複製的目的端如果已經有相同的檔案就不再作備份

另外題目有需要判斷是否為文字檔
find /var/log -name "*.log" -exec ls -l {} \; | grep ASCII > /dev/null >> /var/log/log_manager.log

我這樣插入一段判斷文字檔的參數對嗎?


錯了
顯示出來亂七八遭XD...
DES = 目標資料夾
FILES = 要比對的文件群

for ONE_FILE in $FILES
do
# 從目標檔尋找ONE_FILE的名子
TEMP = "ls $DES | grep "$ONE_FILE" "

# 如果為空集合,那就是代表目標資料夾沒該檔啦!
if [ TEMP == "" ] ; then

#.........然後就看你要對$ONE_FILE 這個檔案做出什麼事 ............


fi

done



# 以上的東西都沒測試過,也不知道能不能跑,基本上我只想到用grep來充當filter,其它的語法都忘的差不多了

話說樓主還真拼呀= =
我剛剛讀書讀到一半就忍不住跑去睡了,結果還可以看到你奮鬥到十二點半
用script 我不會
但寫個c 我就會了, XD,
我打算做出成果後再去見老師
不然沒臉去見他
希望以我對他的認識
他會願意讓我補交這期末考
繼續...
確實很難得看到問作業沒被炮的,
看到整串的回文就勾起滿滿的回憶,
十六年前,大一上接觸了 C ,從此被電腦深深吸引,
利用一整個寒假, K 完 FreeBSD 的 source code,
回到學校時,再去圖書館借書研究,
從此看 script 或 .c 檔,就會很輕鬆.
再自修 Forth 語言,連硬體都可以很簡單的去看待.
當然,現在,對你這個作業已經來不及了.
但,這個暑假,你可以試試看.

寫 shell script ,除了直譯式語法外,指令部分可以多使用 man 去查.
甚至 man 裡面會附有範例.以這個作業會使用到的 date 來說 ,
man 裡面有個範例語法: date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"
看不懂或猜不透的話,直接去跑看結果就知道了.
但要有基本的判斷,如 \rm -rf / 這種指令,就千萬不能去試.

判斷是否為文字檔,指令 file 會去使用 magic 檔案來判斷檔案類型,
但有些盲點,除了 ASCII text ,例如純文字逗號分隔的 csv 檔會被判定為 ISO-8859 text
而你卻只擷取 ASCII 字串.


而後面回的人比較少的原因是:
靠前面這四頁的內容就可以完成這個作業了.
加油!
多 run 看看,多 man 看看.

注意喔.
"靠前面這四頁的內容就可以完成這個作業了."
為什麼一定要自己寫 Log 的 Shell
不是有個 logroate 管理程式嗎?可以自動壓縮每日或每週都可以自行設定啊!!
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!