擦除外部硬盘上的备份文件

擦除外部硬盘上的备份文件

我正在寻找一种方法来从外部硬盘驱动器中删除自动备份文件(格式为“filename.extension~”的文件),我将主磁盘上的备份保存在那里。

如果文件位于 /home,我可以使用 bleachbit 或类似程序(如 ubuntu tweak)删除它们。

可以做到吗?

答案1

这是使用 的命令行方式find。不过,它比使用 Ubuntu Tweak 之类的 GUI 更高级一些。

  1. 找到外部硬盘的挂载点。有几种方法:

    • 在文件管理器中,按Ctrl+L可显示基于文本的位置栏。将此绝对位置复制到剪贴板。
    • 在终端中识别硬盘驱动器cat /proc/mounts并找到挂载点。例如:

      /dev/sdc1 /media/1589-880A vfat rw,nosuid,[...]
      

      指示挂载点为/media/1589-880A

  2. 打开终端并使用以下find命令列表与我们正在执行的搜索相匹配的文件。将/media此处的路径替换为您在上一步中找到的挂载点。我已添加-type f到过滤器中文件仅-忽略链接和目录。

    find /media/1589-880A -name "*~" -type f
    
  3. 如果您对结果感到满意并且确定要删除这些文件,请按如下方式执行删除:

    find /media/1589-880A -name "*~" -type f -delete
    

    笔记:这些文件将不是被发送到垃圾箱!它们会立即消失。没有简单的撤销方法。不要要求撤销此操作。

随意修改*~模式以允许其他用例的其他匹配(例如*.bakautobackup-2012-*.tar.gz等。它只是使用普通的 shell 通配符。完全可以选择子文件夹甚至父文件夹而不是挂载点。无论如何,在删除之前始终先列出!

如果您不确定,可以选择添加-xdev到命令中以防止其进入其他文件系统。find

答案2

在 shell 的命令行提示符下,你可以使用如下命令

rm -i *~

从当前目录中删除名称以 ~ 结尾的文件。该-i标志告诉rm(“remove”命令)在删除之前进行询问。如果您不熟悉使用 shell 命令,请保留该-i标志,直到您熟悉为止,因为错误位置的空格等小错误可能会造成严重后果。

要列出当前目录中将受影响的文件,您可以说以下任一项。

ls *~
ls -l *~
ls -la *~

要将特定目录设为当前工作目录,请使用命令cd和目录名称。例如,如果您推断出备份磁盘安装在/media/xyz(通过cat /proc/mounts另一个答案中提到的命令,或者更直接地通过mount不带参数的命令,或通过df),您会说cd /media/xyz将备份驱动器的顶级目录设为当前工作目录。

编辑:rm -i *~命令仅影响当前目录中的文件,不影响子目录。要处理不确定级别的目录,请使用find另一个答案中给出的方法。但是,如果您知道目录嵌套的深度,并且级别很浅,则可以使用类似

rm -i  *~  */*~  */*/*~

如图所示,这将删除当前目录、其直接子目录及其直接子目录中的 ~ 文件。

编辑2:正如 gertvdijk 在评论中提到的那样,之前编辑中显示的笨拙可以通过使用Bash 4.0+ 递归 shell 通配符rm来简化(**1shopt -s globstar)。输入命令后,独立的 实例**将以递归方式进行匹配,即代表当前目录及其后代中的所有名称。 (shopt -u globstar关闭globstar,但由于不太可能输入**错误,因此在交互式 shell 中保持打开状态似乎是合理的。)因此,在 之后shopt -s globstar,命令rm -i **/*~将删除当前目录及其后代中的 ~ 文件。请注意,如果这些文件名加起来超过几百万个字符,命令行可能会变得太长,bash 无法处理。该find方法没有这个特殊的限制。

相关内容