You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除快捷方式内各类文件及指定格式文件,仅保留目录?

如何仅删除指定文件并保留目录?

嘿,我来帮你搞定这个问题!要实现删除快捷方式文件、.md/.txt/.py等格式文件,同时只保留目录的需求,有几个靠谱的方法,我给你拆解清楚:

方法一:用find命令(最安全通用的选择)

find是处理这类文件操作的黄金工具,它能精确匹配文件类型和后缀,还能避免特殊文件名(比如带空格、换行符)的坑。

场景1:删除指定类型的文件(含快捷方式)

如果你只想删除快捷方式(比如Windows的.lnk或Linux的.desktop)和.md/.txt/.py文件,且只处理当前目录(不递归子目录),可以先预览要删除的文件,确认无误后再执行删除:

# 先预览匹配的文件
find . -maxdepth 1 -type f \( -name "*.md" -o -name "*.txt" -o -name "*.py" -o -name "*.lnk" -o -name "*.desktop" \) -print

确认后执行删除:

find . -maxdepth 1 -type f \( -name "*.md" -o -name "*.txt" -o -name "*.py" -o -name "*.lnk" -o -name "*.desktop" \) -delete

参数解释:

  • -maxdepth 1:限制只搜索当前目录,不深入子目录
  • -type f:只匹配普通文件(自动排除目录、设备文件等)
  • \( ... \):把多个匹配条件分组,-o表示“或”关系
  • -name "xxx":匹配对应后缀的文件,可根据你的系统调整快捷方式的后缀

场景2:删除所有普通文件(只留目录)

如果你想删除当前目录下所有普通文件(不管后缀),只保留目录,命令更简单:

# 先预览
find . -maxdepth 1 -type f -print
# 确认后删除
find . -maxdepth 1 -type f -delete

方法二:用rm结合ls(仅适用于无特殊字符的文件名)

如果你的文件名都是简单的(没有空格、特殊符号),可以用ls筛选后直接删除:

删除指定类型文件

rm *.md *.txt *.py *.lnk *.desktop

删除所有普通文件

利用ls -p会给目录添加/的特性,过滤掉目录后删除:

rm $(ls -p | grep -v /)

⚠️ 注意:如果文件名包含空格、换行符或特殊字符,这种方法会出错,所以优先用find。

关于你提到的ls测试命令

你提到的两个ls用法可以帮你快速区分文件和目录:

  • ls -d .*/:只会显示目录本身,不会展开目录内容,方便你确认目录列表
  • ls -f:关闭排序,按磁盘存储顺序显示文件,同时会给目录加/、可执行文件加*、链接文件加@,能一眼区分文件和目录:
ls -f

内容的提问来源于stack exchange,提问作者Wizard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:08:11