Re: [問題] 請問 find 排除某些檔案的方式

看板Linux作者 (朔雪)時間6年前 (2017/06/30 17:08), 編輯推噓4(401)
留言5則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《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

06/30 19:16, , 1F
06/30 19:16, 1F

07/03 16:05, , 2F
07/03 16:05, 2F

07/04 10:43, , 3F
讚!!
07/04 10:43, 3F

07/04 15:41, , 4F
file含space有無解?
07/04 15:41, 4F

07/12 01:26, , 5F
調 IFS 跟 quote 吧
07/12 01:26, 5F
文章代碼(AID): #1PLXKdX9 (Linux)
文章代碼(AID): #1PLXKdX9 (Linux)