Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux上,删除具有特定文件扩展名的文件_Linux_Bash_File_Delete File - Fatal编程技术网

在Linux上,删除具有特定文件扩展名的文件

在Linux上,删除具有特定文件扩展名的文件,linux,bash,file,delete-file,Linux,Bash,File,Delete File,我想删除文件夹及其子文件夹中除名为*Original.fal的文件外的所有扩展名为.fal的文件。问题是我想删除具有相同扩展名的其他文件: *原文:fal.ds *原文:fal.ds.erg *原文:fal.ds.erg.neu 还有其他的.fal我也要删除,它们没有原件。 名字总是不同的,所以我不能删除特定的名字。*Original.fal没有变化 我只能到这里: $find /disk_2/people/z183464/DOE-Wellen -name "*.fal" \! -name "*

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

*原文:fal.ds *原文:fal.ds.erg *原文:fal.ds.erg.neu 还有其他的.fal我也要删除,它们没有原件。 名字总是不同的,所以我不能删除特定的名字。*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:是一个目录
如果您不希望find深入太深,可以使用-maxdepth限制它。

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

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

用find…|格雷普。。。如果需要更大的灵活性,也可以使用正则表达式

只需重命名不想删除的文件,然后执行简单的rm,然后重新重命名该文件。您的查找解决方案应该可以正常工作。错误消息似乎只是因为您在两行上键入了一行代码。类型f-stuff应该和上面的东西在同一行,然后它应该可以工作。提示:使用-exec echo rm{}\;在没有回音的情况下执行它之前,看看它会做什么。是的,我把它返回到第一行,但是第一个错误仍然存在。我怎样才能在不指定文件夹的情况下执行相同的操作,而是在从其他人给出的指针调用的文件夹中执行。我想指出:.fal不是您想要的。以.fal结尾的文件。换句话说,只有*Original.fal匹配。您可能需要.fal.*,它将实际获取包含.fal的所有文件。-注意,它将选择您列出的所有项目,但不会选择*Original.fal。@Vihar:问题变了:-您必须将感叹号反斜杠,它是bash中与历史扩展相关的特殊字符。是的,它确实发生了变化:我在感叹号前后使用了\进行了尝试-仍然相同…@Vihar:在感叹号后面加反斜杠引用空格。之前应该够了,我是说我两个都试过了。我犯了一个错误,把-type放在下一行,所以第二个错误现在消失了。但是第一个条件与感叹号前的反斜杠保持一致。@Vihar:将-type条件移到否定之前。当我运行代码时,它给了我:/disk_2/people/z183464/DOE Wellen:是一个目录