請問 find 排除某些檔案的方式 - Linux

By Skylar DavisLinda
at 2017-06-30T17:08
at 2017-06-30T17:08
Table of Contents
※ 引述《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 # 刪除
大概是這樣 不知道有沒有更好的想法
--
: 小弟想要每日刪除在/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 # 刪除
大概是這樣 不知道有沒有更好的想法
--
Tags:
Linux
All Comments

By David
at 2017-07-01T15:07
at 2017-07-01T15:07

By Sandy
at 2017-07-04T00:19
at 2017-07-04T00:19

By Zenobia
at 2017-07-06T10:51
at 2017-07-06T10:51

By Lauren
at 2017-07-07T12:10
at 2017-07-07T12:10

By Connor
at 2017-07-09T20:01
at 2017-07-09T20:01
Related Posts
請問 find 排除某些檔案的方式

By Donna
at 2017-06-30T02:59
at 2017-06-30T02:59
mac terminal 2>&1 導向的問題

By Donna
at 2017-06-29T16:30
at 2017-06-29T16:30
使用Gnome-terminal,如何儲存記錄檔?

By Catherine
at 2017-06-28T14:51
at 2017-06-28T14:51
CentOS(1611)安裝時GPT設定

By Christine
at 2017-06-28T10:20
at 2017-06-28T10:20
hwclock設定時間

By Kama
at 2017-06-28T09:01
at 2017-06-28T09:01