※ 引述《ilay (iWork 09真是爽)》之銘言:
: #!/bin/bash
找到檔案超過 2048k 的,並列出清單(含隱藏檔)加存到 log_manager.sh ???
: find -type f -size +2048k -exec ls -la {} \; >> log_manager.sh
再把目前的日期時間加存到 log_manager.sh ????????
: date >> log_manager.sh
= =a
你的 log_manager.sh 是一支 shell scripts, 還要拿來存 ls 和 date 的資料...
這樣 run 起來會不正常吧?
一般是把 ls / date 的結果另存一份文字檔,而不會直接加上原 shell scripts
這個我只會拆成兩段..
: find /var/log -name "*.log" -size +2048k | xargs -i cp {} {}.`date +%Y-%m-%d-%H:%M`
LISTS=`find /var/log -name "*.log" -size +2048k`
for LIST in $LISTS ;do
# 下面的 if 是 如果目標存在 的寫法 ... 正確是應該 如果目標不存在 才進行動作
# 忘記怎麼寫了 ..
if [ -f $LIST ]; then
# if [ ! -f $LIST ]; then <-- 有可能是寫成這樣
cp $LIST $LIST.`date +%Y-%m-%d`
fi
done
if 的用法
man bash
if
-f file
True if file exists and is a regular file.
: 以上是一支 shell script 檔名為 log_manager.sh
我不太了解你的 log_manager.sh 用來存 ls 和 date 結果的目的...
可否解說一下?
: 目前要加上一樣功能:
: 當copy的目的地有一樣大小的檔案時(檔名不限) 則取消該檔案複製動作
: 這樣要怎麼作才好了
: 懇請先進們指教! thx
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.130.203.236
※ 編輯: aeolus0829 來自: 220.130.203.236 (01/08 09:00)