看板 Linux 關於我們 聯絡資訊
※ 引述《s8454158 (′‧ω‧‵)》之銘言: : 小弟想要每日刪除在/opt/123/log 內的所有檔案,但是要排除連結指向的檔案... : 以下是目錄底下的資料: : /opt/123/log/aaa.ERROR -> ERROR20170622-091436.1204 : /opt/123/log/aaa.WARNING -> ERROR20170622-211432.4204 : /opt/123/log/aaa.INFO -> INFO20170622-221431.1927 : /opt/123/log/bbb.ERROR -> ERROR20170622-091432.1477 : /opt/123/log/bbb.WARNING -> ERROR20170622-111432.8437 : /opt/123/log/bbb.INFO -> INFO20170622-091438.1277 : 其餘還有一大堆類似的檔案,上面六個檔案檔名會變動也不能搬移 = = : 有方法可以寫 shell script 用 find 排除某些特定檔案一次殺光其他檔案嗎?? : 感恩~ #!/bin/sh LOG_PATH="/opt/123/log" # 找出所有的 regular file 並展開成絕對路徑 REGULAR_FILES=$(find "$LOG_PATH"/* -type f -exec realpath \{\} \;) # 找出所有的 symbol link 並展開成絕對路徑 SYMBOL_LINKS=$(find "$LOG_PATH"/* -type l -exec realpath \{\} \;) FILES=$( printf '%s\n%s\n' "$REGULAR_FILES" "$SYMBOL_LINKS" | # 串接兩個檔案列表 sort | # 排序 (uniq 需要排序後的資料) uniq -u | # 只留下不重覆的行 這邊會排除被連結的檔案 grep "$LOG_PATH" # 排除不在 $LOG_PATH 下的檔案 ) echo "$FILES" # 測試用 印出找出來的檔案 # rm $FILES # 刪除 大概是這樣 不知道有沒有更好的想法 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.224.174 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1498813735.A.849.html
ddtsatan: 推 06/30 19:16
pizzahut: 推 07/03 16:05
s8454158: 讚!! 07/04 10:43
newversion: file含space有無解? 07/04 15:41
Bencrie: 調 IFS 跟 quote 吧 07/12 01:26