我试图在一个目录中查找所有超过30天的.pkl类型的文件,获取找到的文件的父目录并删除它们。我的解决方案如下所示:
find path_to_dir/.cache -type f -name "*.pkl" -mtime +30 |
xargs dirname | xargs rm -r
有没有办法避免双xargs?另外,我的另一个任务是删除所有日志文件,但不删除父目录。
find path_to_dir -type f -name "*.log" -mtime +30 -delete
我可以在没有代码复制的情况下在一行中完成以上操作吗?
1条答案
按热度按时间qhhrdooz1#
如果你使用GNU find,你可以在
-printf
命令中使用%h
标记:要组合这两个操作,可以使用以下方法:
...但这是假设您可以对两个运算使用相同的起始前缀(在示例中,您在第一种情况下使用
path_to_dir/.cache
,在第二种情况下使用path_to_dir
)。