【发布时间】:2013-05-21 08:12:37
【问题描述】:
我想删除文件夹及其子文件夹中具有特定扩展名 - “.fal”的所有文件,但名为“*Original.fal”的文件除外。问题是我想删除其他具有相同扩展名的文件:
- *Original.fal.ds
- *Original.fal.ds.erg
- *Original.fal.ds.erg.neu
我还想删除其他“.fal”,它们中没有“Original”。 名字一直在变化,所以我不能删除特定的名字。 *Original.fal 没有变化。
我只能到这里:
$find /disk_2/people/z183464/DOE-Wellen -name "*.fal" \! -name "*Original.fal" -type f -exec echo rm {} \;
如果该命令只能在它被调用(执行)的文件夹(及其子文件夹)中删除,那就太好了
当我运行代码时,它给了我一个错误:
- /disk_2/people/z183464/DOE-Wellen:是一个目录
【问题讨论】:
-
重命名你不想删除的文件,然后做一个简单的rm,然后再重命名文件。
-
您的
find解决方案应该可以正常工作。错误消息似乎只是因为您在两行上键入了单行。-type f-stuff 应该与上面的东西在同一行,然后它应该起作用。提示:在没有echo的情况下实际执行它之前,使用-exec echo rm {} \;查看它会做什么。 -
是的,我回到了第一行,但第一个错误仍然存在。我该如何做同样的事情,而不指定文件夹,而是在它正在执行(调用)的文件夹中执行它
-
除了其他人给出的指示之外,我想指出:“.fal”不是你想要的。获取以 .fal 结尾的文件。换句话说,只有
*Original.fal会匹配。您可能想要“.fal.*”,它实际上会获取所有包含“.fal.”的文件。 -- IOW,它将选择您列出的所有项目,但不会选择“*Original.fal”。
标签: linux bash file delete-file