我是unix的新手,在其他问题上无法获得适当的结果。
我想只列出当前目录中超过x天的文件。我有以下限制
file1 file2 file3 ..
我使用了find . -mtime +30
。但这也会在子目录中提供文件和文件。我想限制递归搜索而不是搜索目录。
提前多多感谢!
答案 0 :(得分:6)
你可以这样做:
find ./ -maxdepth 1 -type f -mtime +30 -print
如果遇到问题,请执行:
find ./ -depth 1 -type f -mtime +30 -print
答案 1 :(得分:0)
您可以使用find . -maxdepth 1
来做到这一点。
答案 2 :(得分:0)
要添加@Richasantos的答案:
这很好用
$ find . -maxdepth 1 -type f -mtime +30
打印:
./file1
./file2
./file3
您现在可以将其通过管道传递到所需的任何对象。假设您要删除所有这些旧文件:
$ find . -maxdepth 1 -type f -mtime +30 -print | xargs /bin/rm -f
来自man find
:
如果将find的输出传递到另一个程序中,并且最有可能的是正在搜索的文件可能包含换行符,那么您应该认真考虑使用
-print0
选项而不是{{ 1}}。
所以使用-print
-print0
打印(中间有空字符):
$ find . -maxdepth 1 -type f -mtime +30 -print0
并用于删除这些旧文件:
./file1./file2./file3
答案 3 :(得分:0)
对此稍有不同:find
用途广泛,您可以如下指定大小和时间:
这将为您找到所有大于4个月且大于1兆的日志。 如果您删除+号,它将找到大小大致相同的文件。
find /var/log -type f -mtime +120 -size +1M
/var/log/anaconda/journal.log
/var/log/ambari-agent/ambari-alerts.log.23
/var/log/ambari-agent/ambari-alerts.log.22
/var/log/ambari-agent/ambari-alerts.log.24
/var/log/ambari-agent/ambari-alerts.log.25
/var/log/ambari-agent/ambari-alerts.log.21
/var/log/ambari-agent/ambari-alerts.log.20
/var/log/ambari-agent/ambari-alerts.log.19
更好的是,您可以将其输入ls
:
find /var/log -type f -mtime +120 -size +1M -print0 | xargs -0 ls -lh
-rw-r--r--. 1 root root 9.6M Oct 1 13:24 /var/log/ambari-agent/ambari-alerts.log.19
-rw-r--r--. 1 root root 9.6M Sep 27 07:44 /var/log/ambari-agent/ambari-alerts.log.20
-rw-r--r--. 1 root root 9.6M Sep 22 03:32 /var/log/ambari-agent/ambari-alerts.log.21
-rw-r--r--. 1 root root 9.6M Sep 16 23:23 /var/log/ambari-agent/ambari-alerts.log.22
-rw-r--r--. 1 root root 9.6M Sep 11 19:12 /var/log/ambari-agent/ambari-alerts.log.23
-rw-r--r--. 1 root root 9.6M Sep 6 15:02 /var/log/ambari-agent/ambari-alerts.log.24
-rw-r--r--. 1 root root 9.6M Sep 1 10:51 /var/log/ambari-agent/ambari-alerts.log.25
-rw-------. 1 root root 1.8M Mar 11 2019 /var/log/anaconda/journal.log