随着日志文件变得越来越大,我正在尝试制作一些备份脚本。我所拥有的是处理当前文件(例如secure
中的文件/var/log/
)并从该文件中删除内容。但是有一些文件的名称如下:secure.1
,secure.2
所有这些我喜欢对它们进行计数,如果数字更大,则将2
它们全部存档。我找不到找到这些文件或对它们进行计数的方法。我首先想到的是:
find /var/log/ -name *.1 | wc -l
并且这将始终打印,1
因为只有一个文件secure.1
。我如何像在 for 循环中一样计数,在其中我可以指定类似{1..5}
或相似的数字范围。有没有一种方法可以分离这些文件并将它们作为一个文件进行备份或删除或其他什么...或者首先我如何找到所有以数字结尾的数字。
答案1
简单地说-name
:
find /var/log -name '*.[2-9]'
或对于任何数字:
find /var/log -name '*.[[:digit:]]'
或者如果数字后可能有其他字符:
find /var/log -name '*.[2-9]*'
答案2
.
查找以[1 到 5]范围内的数字结尾的文件名。
find /var/log/ -type f -regextype sed -regex ".*\.[1-5]$"
答案3
为什么不只是...
for log in /var/log/*.[1-5]
do whatever to "$log"
done
据我所知,你不需要find
- shell 使用与-name
.如果所有文件都在一个目录中...当然,如果有您也感兴趣的子目录,那么find
可能会有所帮助 - 在 shell 中遍历树可能会很头痛。