首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用linux命令使用倾斜标记删除不需要的文件?

如何使用linux命令使用倾斜标记删除不需要的文件?
EN

Unix & Linux用户
提问于 2017-07-05 04:36:31
回答 3查看 2.8K关注 0票数 0

在这里,我想从我的目录和子目录中删除所有的倾斜文件。我如何在这里使用linux命令?

树结构:

代码语言:javascript
复制
.
|-- Block_Physical_design_checklist
|   |-- Block_Physical_design_checklist.config
|   |-- Block_Physical_design_checklist.html
|   |-- Block_Physical_design_checklist.html~
|   `-- rev6
|       |-- rev6.config
|       `-- rev6.html
|-- CAD_checklist
|   |-- CAD_checklist.config
|   |-- CAD_checklist.html
|   |-- CAD_checklist.html~
|   `-- rev6
|       |-- rev6.config
|       `-- rev6.html
|-- Formality_DCT_Vs_ICC
|   |-- Formality_DCT_Vs_ICC.config
|   |-- Formality_DCT_Vs_ICC.html
|   |-- Formality_DCT_Vs_ICC.html~
|   `-- rev6
|       |-- rev6.config
|       |-- rev6.html
|       `-- rev6.html~

预期树结构:

代码语言:javascript
复制
.
|-- Block_Physical_design_checklist
|   |-- Block_Physical_design_checklist.config
|   |-- Block_Physical_design_checklist.html
|   `-- rev6
|       |-- rev6.config
|       `-- rev6.html
|-- CAD_checklist
|   |-- CAD_checklist.config
|   |-- CAD_checklist.html
|   `-- rev6
|       |-- rev6.config
|       `-- rev6.html
|-- Formality_DCT_Vs_ICC
|   |-- Formality_DCT_Vs_ICC.config
|   |-- Formality_DCT_Vs_ICC.html
|   `-- rev6
|       |-- rev6.config
|       |-- rev6.html
EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2017-07-05 04:44:45

您的方法find . -type f -name '*~' -exec rm -f '{}' \;有两个问题/改进范围:

  • -name '*~'只匹配以~结尾的文件;如果要匹配任何包含~的文件,请使用*~*
  • -exec rm -f '{}' \;正在为每个文件生成rm,这是笨拙和低效的;相反,由于rm可以接受多个文件作为参数,您可以告诉find ... -exec一次获得尽可能多的文件,而不使用-exec+参数触发ARG_MAX

把这两者结合在一起:

代码语言:javascript
复制
find . -type f -name '*~*' -exec rm -f {} +

如果碰巧有GNU find,则可以使用-delete操作:

代码语言:javascript
复制
find . -type f -name '*~*' -delete

zsh中,您可以一次执行递归模式匹配和删除,例如:

代码语言:javascript
复制
rm -f -- **/*~*(.)

glob修饰符.只匹配常规文件。

票数 2
EN

Unix & Linux用户

发布于 2017-07-05 04:38:43

这是我的答案

代码语言:javascript
复制
find . -type f -name '*~' -exec rm -f '{}' \;
票数 1
EN

Unix & Linux用户

发布于 2017-07-05 05:13:10

使用bash的globstar选项:

代码语言:javascript
复制
shopt -s globstar ; rm ./**/*~

globstar允许使用**递归全局化,而./则防止文件名中可能包含领先-的问题,而*~将与以tilde结尾的文件名匹配。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/375366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档