Kus*_*nda 10
假设find您的 Unix 上的实现具有-maxdepth谓词(它是非标准的,但通常可用),以下find命令将执行此操作:
find . -maxdepth 1 -type f -mtime +0
Run Code Online (Sandbox Code Playgroud)
这会将修改时间戳超过 24 小时前的常规文件(即不是目录、套接字、命名管道等)的名称打印到终端。
如果-maxdepth不能使用,则考虑
find . ! -name . -prune -type f -mtime +0 -print
Run Code Online (Sandbox Code Playgroud)
这意味着:
find正在查看的不是 .( ! -name .),当前目录,则find( -prune)的搜索路径中修剪该路径。这find甚至停止考虑进入任何子目录。-type f),并且-mtime +0),则-print)。关于-mtime +0:在您的 AIX 系统上,请参阅有关 的语义的注释-mtime以确定是否使用-mtime +0或-mtime +1。如果你想在UNIX03行为,你应该使用-mtime +0,以找到超过24小时前修改时间戳文件(并设置环境变量XPG_SUS_ENV来ON并XPG_UNIX98到OFF,按照手册中与注)。
默认情况下,find输出找到的文件的路径名。这意味着您将从./上述命令中获得文件名。如果您不希望那样,则必须basename为每个找到的文件名调用该实用程序。
你可以这样做:
find . ! -name . -prune -type f -mtime +0 -exec basename {} \;
Run Code Online (Sandbox Code Playgroud)
在评论中你提到你想压缩这些文件。为此,无需调用该basename实用程序。只需调用gzip(或您想使用的任何压缩实用程序):
find . ! -name . -prune -type f -mtime +0 -exec gzip {} +
Run Code Online (Sandbox Code Playgroud)
根据您是否想对这些文件做进一步的处理,您可以在此站点上寻找类似的问题,例如为什么循环查找的输出是不好的做法?
还相关: