2

我想删除文件夹及其子文件夹中具有特定扩展名的所有文件 - “ .fal ”,但名为“*Original.fal”的文件除外。问题是我想删除具有相同扩展名的其他文件:

  • *Original.fal.ds
  • *Original.fal.ds.erg
  • *Original.fal.ds.erg.neu

我还想删除其他“ .fal ”,它们中没有“原始”。名字一直在变化,所以我不能删除特定的名字。*Original.fal 没有变化。

我只能到这里:

$find /disk_2/people/z183464/DOE-Wellen -name "*.fal" \! -name "*Original.fal" -type f -exec echo rm {} \;

如果该命令只能在它被调用(执行)的文件夹(及其子文件夹)中删除,那就太好了

当我运行代码时,它给了我一个错误:

  1. /disk_2/people/z183464/DOE-Wellen:是一个目录
4

2 回答 2

3

如果你不想find潜水太深,你可以用 限制它-maxdepth

于 2013-05-21T08:16:02.457 回答
0

您可以为此使用一个简单的 for 循环。此命令显示您可能要删除的所有文件。用 rm 更改 echo 以删除它们。

cd /disk_2/people/z183464/DOE-Wellen && for I in `find . -name "*.fal" ! -name "*Original.fal"`; do echo $I; done

使用“find ... | grep ...”,如果您需要更大的灵活性,您也可以使用正则表达式。

于 2013-05-21T08:32:42.520 回答