在linux中使用带有find命令的管道

时间:2017-04-27 12:20:15

标签: linux bash unix pipe

我想在我的主目录中找到以'〜'开头的文件,按数字排序,打印前五个并使用Linux中的find命令和管道删除它们。我有一个bash脚本:

#!/bin/bash
find ~/ -name "~*" | sort -n | head -5 | tee | xargs rm

这适用于删除文件,但我希望tee命令将已删除的文件打印到标准输出。所有这个命令都是删除文件,但在终端输出中。我应该添加/更改什么? 谢谢。

2 个答案:

答案 0 :(得分:3)

您可以在rm上使用详细标记,它会告诉您删除的内容

find ~/ -name "~*" | sort -n | head -5 |  xargs rm -v

使用man rm查看文档

  

-v, - verbose

     

解释正在做什么

答案 1 :(得分:3)

您可以使用rm -v打印每个删除文件名:

find ~ -name '~*' -print0 | sort -zn | head -z -n 5 | xargs -0 rm -v

另请注意,使用-print0sort. head, xargs中的所有相应选项来处理带有空格和全局字符的文件名。