删除所有扩展名为“ .sh”的文件,但通过终端保留一个与扩展名匹配的文件

薇姬·德芙(Vicky Dev)

实际上,我想问的太多了。

但是我想删除所有与扩展名“ .sh”(仅当前文件夹)匹配的文件,可以使用以下命令进行操作:

find . -maxdepth 1 -type f -name '*.sh' -exec rm {} +

但是我仍然希望保持当前文件夹中的文件“ cron.sh”不受影响。

如何在单个命令行中实现呢?

芒登

您可以使用-not

find . -maxdepth 1 -type f -name '*.sh' -not -name cron.sh -delete

另外,GNUfind具有-delete使用更简单选择rm -rf

重要提示:始终放在-delete最后。如中所述man find

警告:请不要忘记find命令行是作为表达式求值的,因此,将-delete放在首位将使find尝试删除指定起点以下的所有内容。


另外,您可以使用Shell循环(但不要,find上面命令效率更高):

for f in *.sh; do [ "$f" = "cron.sh" ] || rm "$f"; done

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从终端删除具有特定扩展名的文件,但一个文件除外

将 2 个具有不同扩展名的相似文件重命名为第一个文件,但保留扩展名

列出所有git提交,其中至少包含一个扩展名为.txt的文件

列出所有扩展名为.log的文件(一个除外)

python,读写所有扩展名为*.txt的文件

删除除文件扩展名之外的所有内容

删除所有dll扩展名

需要删除Windows 7中驱动器上一个扩展名的所有文件

加载一个只有扩展名的文件

将所有相同扩展名的文件移动到一个文件夹

为所有 bash 文件添加 .sh 扩展名

通过CMake删除文件名(最短)扩展名(获取文件名删除最后一个扩展名)

查找一个扩展名的文件名,但没有其他扩展名的匹配文件名

Gulp:复制所有文件但排除一个扩展名

当所有文件具有不同的扩展名时,如何将文件夹中所有文件的扩展名更改为一个公共扩展名?

通过regexp删除具有特定扩展名的文件

显示所有扩展名为.txt的文件中的一组特定行

如何使统一忽略所有扩展名为.swp的文件

扩展名为bash和sh的文件

从特定扩展名的所有文件中删除最后一行

如何使用大括号扩展unix删除多个扩展名的所有文件?

gitignore,以一个扩展名跟踪所有文件,但一个特定文件除外

使用批处理文件删除文件夹中除一个扩展名(例如.idf)以外的所有文件

删除具有相同扩展名的批量文件,同时保留具有相同扩展名的文件

如何打开扩展名为.chk或没有扩展名的二进制文件?

将具有特定扩展名的所有文件复制到另一个目录,同时更改扩展名

抓取网站后,我有一个扩展名为 .pl 的非 perl 文件

删除文件扩展名

将所有以特定扩展名结尾的文件与shell glob匹配(例如,所有以.sh结尾的文件)