意外递归 cp -R,现在无法使用垃圾或 rm 删除文件

意外递归 cp -R,现在无法使用垃圾或 rm 删除文件

在使用时输入错误路径后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

由于名称相同,脚本会在两个临时名称之间“翻转”。

相关内容