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

Ubuntu 22.04执行错误find命令误删文件后,磁盘仍显示占用但无法查看文件的恢复求助

Ubuntu 22.04执行错误find命令误删文件后,磁盘仍显示占用但无法查看文件的恢复求助

兄弟,先别慌!我来帮你一步步分析和尝试找回文件:

首先得说,你执行的find . capcut "*.bak" -type f -delete命令明显写错了——正确的写法应该用-name参数指定文件名匹配,比如find . -name "*.bak" -o -name "*capcut*" -type f,你没加参数的情况下,capcut和"*.bak"被当成了搜索路径,导致find遍历所有文件并删除,这才出了问题。

不过好在磁盘显示还有占用,说明你的文件很大概率还在,可能是下面几种情况,我们逐一排查:

  • 先检查回收站
    普通用户误删的文件通常会进回收站,你可以打开终端,输入ls ~/.local/share/Trash/files/看看有没有你的文件;如果是用root权限执行的删除命令,就去/root/.local/share/Trash/files/目录下找。找到的话直接复制出来就行。

  • 查找被进程占用的已删除文件
    有些文件被删除后,如果还有程序在打开它,磁盘空间就不会被释放,系统也不会显示这些文件。你可以用这个命令查看:

    lsof | grep deleted
    

    输出里会显示进程ID(PID)和文件描述符(FD),比如看到某行是chrome 1234 user 3u REG 8,1 102400 1234567 /home/user/file.txt (deleted),那你就可以用cp /proc/1234/fd/3 ~/recovered_file.txt把文件恢复到你的用户目录下。

  • 用数据恢复工具抢救
    这是最关键的一步,因为现在磁盘数据还没被覆盖,赶紧用专业工具恢复:

    1. Photorec(推荐):这是testdisk套件里的工具,支持多种文件系统。先安装:
      sudo apt install testdisk
      
      然后运行sudo photorec,按照提示选择你的目标分区,然后选择恢复文件保存的位置(一定要选外接U盘或者其他分区,绝对不能选当前被误删的分区,不然会覆盖数据!),然后等待扫描恢复就行。
    2. extundelete:如果你的分区是ext4这类ext文件系统,可以用这个工具:
      sudo apt install extundelete
      
      先通过df -h找到你的分区路径(比如/dev/sda2),然后执行:
      sudo extundelete /dev/sda2 --restore-all
      
      恢复的文件会放在当前目录的RECOVERED_FILES文件夹里,同样要确保当前目录不在被误删的分区上。
  • 排查挂载点问题
    有时候可能是挂载错误导致文件被隐藏,比如某个外接磁盘挂载到了你的用户目录下,原来的文件就被覆盖隐藏了。你可以用df -h查看所有挂载点,或者尝试临时卸载某个可疑的挂载点:

    sudo umount /mnt/your_mount_point
    

    然后看看原来的目录里是不是出现了文件。

最后提醒下:以后执行删除类的find命令,一定要先不带-delete参数跑一遍,确认找到的文件是你要删的,再加上删除参数,比如先执行find . -name "*.bak" -type f,没问题再改成find . -name "*.bak" -type f -delete,这样能避免误删!

备注:内容来源于stack exchange,提问作者user1963160

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 12:19:35