![意外递归 cp -R,现在无法使用垃圾或 rm 删除文件](https://linux22.com/image/1710242/%E6%84%8F%E5%A4%96%E9%80%92%E5%BD%92%20cp%20-R%EF%BC%8C%E7%8E%B0%E5%9C%A8%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%E5%9E%83%E5%9C%BE%E6%88%96%20rm%20%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6.png)
在使用时输入错误路径后cp
,我似乎意外地将文件夹递归复制到其自身中,现在我无法使用rm -rf
或 Mac OS X 中的废纸篓删除该文件夹Finder
。该文件位于启动(因此是 HFS+J)磁盘上。
的输出rm -rf
只是Directory not empty
重复,就像这样:
rm: o/old/old/old/old/old/old/old/old: Directory not empty
rm: o/old/old/old/old/old/old/old: Directory not empty
rm: o/old/old/old/old/old/old: Directory not empty
rm: o/old/old/old/old/old: Directory not empty
rm: o/old/old/old/old: Directory not empty
rm: o/old/old/old: Directory not empty
rm: o/old/old: Directory not empty
rm: o/old: Directory not empty
rm: o: Directory not empty
我该怎么做才能删除该文件夹?
如您所见,我尝试重命名第一个文件夹以缩短文件路径。该文件夹移入文件夹Trash
,但由于出现以下警告对话框而无法删除:
The operation can’t be completed because the item is in use.
答案1
尝试
find o -delete
或者
find o -depth -delete
-depth
告诉find
您首先转到目录树的最深部分,然后再向上返回。手册页说,“使用会-delete
自动启用该-depth
选项。”如果您的版本find
不支持-delete
,请尝试
find o -depth -exec rm -rf {} ";"
答案2
嗯,我刚刚遇到了同样的问题。我通过缩短名称解决了这个问题每一个单个嵌套目录。
由于这是一次性问题,我没有尝试想出任何智能脚本魔法。我只是写了
for FILE in $(ls); do mv $FILE a; cd a; done
在 shell 中,然后按up arrow再次调用命令,然后return。用一根手指按每个键,我只需快速重复两次击键,直到到达最深的目录。然后按cd ~
和cd
到达故障树的根。rm -r
现在常规操作已完成。
答案3
如果你明白了,那就很明显了。因为你不能向下递归,所以你应该将更深一层的目录向上移动一层。之后会剩下一个深度为“一”的目录,你可以删除它。
假设您有一个“无限”目录 a/a/a/a/a/a/a/a/....
然后你这样做:
mv a/a b
rm -r a
mv b/a a
rm -r b
重复此操作直到没有剩余目录。
以下脚本可以完成此操作:(完成后您必须按 ctrl-c)
while [ true ]; do mv a/a b; rm -r a; mv b/a a; rm -r b; done
由于名称相同,脚本会在两个临时名称之间“翻转”。