查找超过X天的文件,不包括其他文件

时间:2010-12-20 10:51:27

标签: linux find solaris

我正在尝试为linux和solaris编写一个shell脚本,它会找到一些早于X天的特定文件,然后删除它们。诀窍是在这个过程中有几个文件不能删除。

例如,我需要删除以下文件列表* .zip并保留* .log和* .something。*
1.zip
2.zip
3.log
prefix.something.suffix

找到文件并将它们送到rm很容易,但是我很难从删除列表中排除文件。

3 个答案:

答案 0 :(得分:4)

我发现我发现可以从逻辑运算符组成的多个复杂表达式中受益,如下所示:

find -L path -type f \( -name '*.log' \) -a ! \( -name '*.zip' -o -name '*something*' \) -mtime +3

欢呼声,
ģ

答案 1 :(得分:2)

我需要找到一种方法来提供不删除的排除文件的硬编码列表,但删除超过30天的所有其他内容。除了[exclude_file]中列出的文件外,这是一个删除30天以前的所有文件的小脚本。

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;

答案 2 :(得分:1)

或者你可以这样做:

find /appl/ftp -type f -mtime +30 |grep -vf [exclude_file] | xargs rm -rf;