如何找到特定目录名称中的文件?

时间:2014-10-07 07:25:50

标签: ksh

我想在/app/*/in目录下保存一些特定名称(/app/*/out/app/*/log/app)的文件,然后按gzip保存(如果是文件)超过1周,然后gzip it)和rm命令(如果文件超过6个月,则删除它。

我找到命令列出需要保管的目录。

find /app \( -name "log" -o -name "LOG" -o -name "infile" -o -name "out" \)

我怎么做?

1 个答案:

答案 0 :(得分:0)

查找超过7天(-mtime +7)的文件(-type f)并执行命令(-exec并用作文件的占位符和\;用于结束命令) 我添加了一个\作为最后一个位置,所以我可以在下一行添加命令。

find /app \( -name "log" -o -name "LOG" -o -name "infile" -o -name "out" \) \
    -type f -mtime +7 -exec gzip {} \;

类似

find /app \( -name "log" -o -name "LOG" -o -name "infile" -o -name "out" \) \
    -type f -mtime +30 -exec rm -f {} \;

请注意 如果要对每个文件执行额外操作,可以避免使用-exec命令:

find /app \( -name "log" -o -name "LOG" -o -name "infile" -o -name "out" \) \
    -type f -mtime +7 | while read oldfile; do
   echo "Compressing ${oldfile}"
   gzip ${oldfile}
done