【发布时间】:2010-12-20 10:51:26
【问题描述】:
我正在尝试为 linux 和 solaris 编写一个 shell 脚本,它会找到一些早于 X 天的特定文件,然后将其删除。诀窍是在此过程中,有几个文件不能删除。
例如,我需要从以下文件列表中删除 *.zip 并保留 *.log 和 *.something.*
1.zip
2.zip
3.日志
prefix.something.suffix
找到文件并将它们提供给 rm 很容易,但我在从删除列表中排除文件时遇到了困难。
【问题讨论】:
-
@Grove,我将创建一个脚本,我将提供 find 的结果,然后在该脚本中我将包含要排除的文件列表。很简单,比如
if not in list; then rm -rf ${file} else ... fi -
问题是每天要排除的文件不一样。更具体地说,它们也是某些系统生成的日志文件
-
@Grove,我仍然不明白问题出在哪里,您想排除以 .log 和 .something 结尾的文件(无论这可能是什么),使用 find 并找到这些文件。将它们保存到一个数组中,然后对所有文件进行查找,将数组中的文件与查找文件进行比较定位(搜索所有文件时)
-
你说得对,我没抓住你的意思:) 但似乎我可以从 find 本身做一些更优雅的事情:find -L path -type f \( -name ' .log' \) -a ! \( -name '.zip' -o -name 'something' \) -mtime +3.不过还是谢谢
-
@Grove,只要确保 Solaris 上的 find 版本支持这种操作即可。