Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.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 如何编写unix命令或脚本来删除当前目录下所有子文件夹中相同类型的文件?_Linux_Bash_Perl_Unix - Fatal编程技术网

Linux 如何编写unix命令或脚本来删除当前目录下所有子文件夹中相同类型的文件?

Linux 如何编写unix命令或脚本来删除当前目录下所有子文件夹中相同类型的文件?,linux,bash,perl,unix,Linux,Bash,Perl,Unix,有没有办法删除一个文件夹及其子文件夹下的所有临时文件和可执行文件 我能想到的就是: $rm -rf *.~ 但这只删除当前目录下的临时文件,根本不删除子文件夹下的任何其他临时文件,也不删除任何可执行文件 我知道有一些类似的问题得到了很好的回答,比如: 但这是一个java代码,我只需要一个unix命令或一个简短的脚本就可以做到这一点 需要帮忙吗? 非常感谢 find . -name "*~" -exec rm {} \; 或者需要任何模式来匹配tmp文件 或者需要任何模式来匹配tmp文件。您可

有没有办法删除一个文件夹及其子文件夹下的所有临时文件和可执行文件

我能想到的就是:

$rm -rf *.~
但这只删除当前目录下的临时文件,根本不删除子文件夹下的任何其他临时文件,也不删除任何可执行文件

我知道有一些类似的问题得到了很好的回答,比如: 但这是一个java代码,我只需要一个unix命令或一个简短的脚本就可以做到这一点

需要帮忙吗? 非常感谢

find . -name "*~" -exec rm {} \;
或者需要任何模式来匹配tmp文件


或者需要任何模式来匹配tmp文件。

您可以通过查找:

find/path/to/directory \-name'*.~'-o \-perm/111-a-type f\\-exec rm-f{}+ 这将对/path/to/base/目录下的任何目录执行rm-f,其中包括:

匹配全局表达式*~ 或者设置了一个可执行位,可以是它的所有者、组或世界 上述内容适用于GNU版本的find

更便携的版本是:

find /path/to/directory \( -name '*.~' -o \( \( -perm -01 -o -perm -010 -o -perm -0100 \) \
     -a -type f \) \) -exec rm -f {} +

您可以使用find获得以下结果:

find/path/to/directory \-name'*.~'-o \-perm/111-a-type f\\-exec rm-f{}+ 这将对/path/to/base/目录下的任何目录执行rm-f,其中包括:

匹配全局表达式*~ 或者设置了一个可执行位,可以是它的所有者、组或世界 上述内容适用于GNU版本的find

更便携的版本是:

find /path/to/directory \( -name '*.~' -o \( \( -perm -01 -o -perm -010 -o -perm -0100 \) \
     -a -type f \) \) -exec rm -f {} +

如果您想使用Perl来做这件事,请使用一个特定的模块,如

如果您想使用Perl来做这件事,请使用一个特定的模块,如

这应该可以完成这项工作

find -type f -name "*~" -print0 | xargs -r -0 rm
这应该可以完成任务

find -type f -name "*~" -print0 | xargs -r -0 rm

命令行中的Perl;如果文件以~结尾或是可执行文件,则应删除

perl -MFile::Find -e 'find(sub{ unlink if -f and (/~\z/ or (stat)[2] & 0111) }, ".")'

命令行中的Perl;如果文件以~结尾或是可执行文件,则应删除

perl -MFile::Find -e 'find(sub{ unlink if -f and (/~\z/ or (stat)[2] & 0111) }, ".")'


找到-name*~-delete可执行文件呢?除非您特别需要为找到的每个对象派生一个单独的命令,否则请使用-exec rm{}+。此表单收集多个执行参数,大大减少了生成的进程数。@请注意,-exec$command{}+是GNU扩展。我不知道-删除。@ikegami不一定。HP-UX和Mac OS X作为品牌UNIX的两个示例,有一个+终止符要查找。查找-name*~-delete可执行文件呢?除非您特别需要为找到的每个对象派生一个单独的命令,否则请使用-exec rm{}+。此表单收集多个执行参数,大大减少了生成的进程数。@请注意,-exec$command{}+是GNU扩展。我不知道-删除。@ikegami不一定。HP-UX和Mac OS X作为品牌UNIX的两个示例,这是要找到的+终止符。目录呢?OP说他想在哪里删除目录?目录没有执行权限吗?非常正确,更新为测试文件,而不是不测试目录。最后是确定的-因此删除了我的下一票。。。奇怪的是,你几乎把所有其他答案都评论为糟糕的,而且可能也投了反对票,但你的答案是最糟糕的,很危险!而你只是在发表了几十条评论之后才管理好它们。。。感觉真的很好吗关于目录呢?OP说他想在哪里删除目录?目录没有执行权限吗?非常正确,更新为测试文件而不是不使用目录。最后确定-因此删除了我的下一票。。。奇怪的是,你几乎把所有其他答案都评论为糟糕的,而且可能也投了反对票,但你的答案是最糟糕的,很危险!而你只是在发表了几十条评论之后才管理好它们。。。感觉真的很好吗File::Remove不提供基于权限进行搜索的选项。实际上,您可以将File::Find::Rule或类似的模块与unlink结合使用。File::Remove不提供基于权限的搜索选项。实际上,您可以将File::Find::Rule或类似模块与unlink.Cool结合使用!谢谢你!perl命令确实删除了所有临时文件,但所有可执行文件仍保留在那里。需要帮忙吗?谢谢。@SSun当前用户是否可以执行这些文件?不,不是。我不知道为什么我的C++执行文件现在不能在我的本地MAC机上执行。奇怪,谢谢。这也行得通。但我已经接受了其他答案。对不起。非常感谢您的帮助。@mpapec这是一个非常好的答案!它对我所有的工作都非常有效!非常感谢凉的谢谢你!perl命令确实删除了所有临时文件,但所有可执行文件仍保留在那里。需要帮忙吗?谢谢。@SSun当前用户是否可以执行这些文件?不,不是。我不知道为什么我的C++执行文件现在不能在我的本地MAC机上执行。奇怪,谢谢。这也行得通。但我已经接受了其他答案。对不起。非常感谢您的帮助。@mpapec这是一个非常好的答案!它对我所有的工作都非常有效! 非常感谢