繁体   English   中英

查找早于X天的文件(不包括其他文件)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM