AIX系统下find命令仅输出符合条件文件名的问题求助
解决AIX系统下find命令仅输出文件名的问题
AIX系统的find命令不支持-printf选项,要实现仅输出文件名而非完整路径,可通过以下两种方法解决:
方法一:结合basename提取文件名
直接用find的-exec参数调用basename命令,提取每个匹配文件的文件名:
find /sas/data/p1/s5/*spds9 -newer /sas_copiadati/aut_eq_*.cpo -exec basename {} \; >> /sas_copiadati/aut_eq.txt
{}代表find找到的当前文件\;是-exec参数的结束标记,确保每个文件都单独执行basename
方法二:处理多个参照文件的情况
如果/sas_copiadati/aut_eq_*.cpo匹配多个文件,find的-newer仅会使用第一个匹配的文件作为参照。若需要以最新的cpo文件作为时间基准,可先获取最新文件再执行查找:
# 获取最新的aut_eq_*.cpo文件 latest_cpo=$(ls -t /sas_copiadati/aut_eq_*.cpo | head -1) # 基于最新文件查找并输出文件名 find /sas/data/p1/s5/*spds9 -newer "$latest_cpo" -exec basename {} \; > /sas_copiadati/aut_eq.txt
ls -t会按修改时间从新到旧排序文件,head -1取最顶部的最新文件- 使用
>覆盖输出文件,若需要追加内容可替换为>>
内容的提问来源于stack exchange,提问作者user1473396
相关产品推荐
相关产品推荐

