使用perl中的find和rm删除多个文件

时间:2014-01-23 10:39:05

标签: perl unix

我的目录中有一些文本文件需要删除。我的目录中有很多文本文件:

leaves_emp1.txt
pay_emp1.txt
pf_emp1.txt
leaves_emp2.txt
pay_emp2.txt
pf_emp2.txt

[...]

我尝试使用以下代码删除包含“emp1”的文件:

/usr/bin/find $LogDir -name \"leaves_emp1.txt\" -and -name \"pay_emp1.txt\" -and -name \"pf_emp1.txt\" -exec rm {}

但它不起作用。请帮忙。我也尝试过-a和-o。我也尝试使用()作为文件。

2 个答案:

答案 0 :(得分:0)

我只是使用以下代码

/usr/bin/find $LogDir -name \"*emp1.txt\" -exec rm {}

答案 1 :(得分:0)

你需要避免使用叉炸弹。 find中的“exec”调用将为每个文件生成一个fork / exec。我觉得调用这样的东西更容易和可扩展:

    find . -type f -name '*emp1.txt' | perl -lane 'unlink $_ if -f $_' -

注意:如果你想坚持使用exec,你必须记得使用“\;”最后

    find . -type f -name '*emp1.txt' -exec rm {} \;