[英]Find files older than X days excluding some other files
我正在尝试为Linux和solaris编写一个Shell脚本,该脚本查找一些早于X天的特定文件,然后将其删除。 诀窍在于,在此过程中,必须删除几个文件。
例如,从以下文件列表中,我需要删除* .zip并保留* .log和* .something。*
1.zip
2.zip
3.日志
前缀。东西。后缀
查找文件并将它们提供给rm很容易,但是我很难从删除列表中排除文件。
我进行了一次实验,发现可以从多个复杂的表达式中受益,这些表达式按如下逻辑运算符分组:
find -L path -type f \( -name '*.log' \) -a ! \( -name '*.zip' -o -name '*something*' \) -mtime +3
干杯,
G
我需要找到一种方法来提供要删除的排除文件的硬编码列表,而不要删除超过30天的所有其他内容。 这是一个小脚本,用于删除30天以上的所有文件,但[exclude_file]中列出的文件除外。
EXCL_FILES=`/bin/cat [exclude_file]`;
RM_FILE=`/usr/bin/find [path] -type f -mtime +30`;
for I in $RM_FILES;
do
for J in $EXCL_FILES;
do
grep $J $I;
if [[ $? == 0 ]]; then
/bin/rm $I;
if [[ $? != 0 ]]; then echo "PROBLEM: Could not remove $I"; exit 1; fi;
fi;
done;
done;
或者您可以这样做:
find /appl/ftp -type f -mtime +30 |grep -vf [exclude_file] | xargs rm -rf;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.