通过终端删除包含特定关键字的文件

通过终端删除包含特定关键字的文件

更新

该命令的进程状态rm -rf ~/.local/share/Trash/files/已设置为Very High。命令于今天 0745 启动,目前仍在运行。CPU 时间在 0955 时为 53 秒,内存恒定为 52.0 miB。状态介于Running和之间Uninteruptible


昨天我打开 nano 查看文件,发现我的主目录中有大量文件可以删除。它们之所以存在,是因为不久前我不小心将我的主目录变成了 git repo。我撤消了此操作,但我想清理一下只有在使用 nano 搜索文件时查看文件夹时才能看到的混乱情况。

我的垃圾箱也遇到了同样的问题,里面有太多来自坏 git 存储库的文件,我无法只单击垃圾箱并单击清空垃圾箱,因为所有 8GB 加上交换空间都用完了,并且没有任何文件被删除。

如何从终端中删除符合特定模式的文件?我尝试了以下命令:

rm -rf ~/.local/share/Trash/Files/*

rm -rf ~/.local/share/Trash/info/*

过了一段时间后,我收到一条消息,说文件太多,无法删除。

我想说的是删除所有以某种模式开头或结尾的文件,例如.quo或任何其他模式。总结一下:

我如何列出所有文件,以便我至少可以开始找到一些开始或结束模式来识别那些要删除的文件,如何使用该模式来删除它们?

答案1

您收到的错误是因为文件太多,这意味着*您的rm命令扩展为一个长度超过限制的列表(最大参数)。因此,要解决这个问题,您有多种选择:

  1. rm只给予一些文件:

    rm -rf ~/.local/share/Trash/Files/*.quo
    
  2. 删除包含文件的目录,这样可以避免列出所有文件:

    rm -rf ~/.local/share/Trash/Files/
    
  3. 使用find

    find ~/.local/share/Trash/Files/ -delete
    

    或者,对于非 GNU find

    find ~/.local/share/Trash/Files/ -exec rm {} +
    
  4. 使用 shell 循环

    for file in  ~/.local/share/Trash/Files/*; do rm "$file"; done
    

相关内容