删除包含无限项目的文件夹

删除包含无限项目的文件夹

在将文件夹复制到 SD 卡后,我立即卸载了它并将其从插槽中移除。问题是,我移除了它它已完成卸载,现在该文件夹名为“ELEILE”(来自“引擎”),并且(据称)有无限的项目,名称完全无效(例如:“╓|?≤^?≈E.DZ$”、“µ?╟ g╥▒τ.?ü”、“j+e?»░a?.b\2”),并报告 6.6TB 的大小,但 SD 只有 16GB,这让它认为只有 11MB 可用(这也没有多大意义)。

每次我尝试做任何与其相关的事情(删除、重命名、复制甚至检查属性)时,它都会开始认为文件系统是只读的,如果我想修改任何内容,我必须重新插入它。

在 FBI(3DS homebrew)之类的程序中打开 SD 通常会将文件夹显示为“引擎”,并且也会正确列出其子文件夹,但是文件丢失并且大小仍然很大,所以没有希望。

我研究这个问题很久了,但是没有人遇到和我一样的问题。我的问题是:如何删除它?

答案1

从终端运行此命令:

Ctl+ Alt+T

$ sudo dosfsck -w -r -l -a -v -t /dev/[drive and partition]

用您的设备的驱动器和分区替换该驱动器和分区。

您可以使用以下命令获取此信息:

sudo lsblk -o name,mountpoint,label,size,fstype,uuid&&sudo parted -l

输出将显示类似于以下内容的分区:/dev/sdb1

聊天结果显示 USB 驱动器的分区是干净的。问题出在 3ds 文件夹下的目录上。由于无法处理该文件夹,因此替代方案是备份驱动器的内容,同时跳过有问题的文件夹。

以下是执行此操作的脚本和步骤:

建立备份文件夹:

$ sudo mkdir /usbbackup
$ chwon $(whoami) /usbbackup

该文件夹可以位于系统上的任何地方。第二条命令授予您的帐户对该文件夹的访问权限。

将脚本中的设置更改为以下设置:

  • source - The name of the mount point of the usb drive
  • dest - The destination folder.
  • skipfolder - The problem folder that is being skipped

备份脚本

#!/bin/bash

source=/media/joaovictor/9016-4EF8/
dest=/usbbackup
skipfolder=3ds

ls $source | while read -r item;do
    # echo $item
    if [[ $item == $skipfolder ]]; then
        # echo $item
        continue
    fi
    echo "$source/$item -> $dest"
    cp -pvau "$source/$item" "$dest"
done

echo "Finished"

相关内容