警告 linux cmd:查找。 -删除-名称“*.swp”
Waring on linux cmd: find . -delete -name "*.swp"
我尝试删除 vim 使用以下命令创建的所有 .swp
文件:
find . -delete -name "*.swp"
。
然后我的整个项目都被删除了...
谁能告诉我为什么?以及如何恢复项目?
如果您将命令更改为:
find . -name "*.swp" -delete
它只会删除它匹配的文件
find . -delete -name "*.swp"
等于rm -rf *
此问题是给程序员的警告信息。
find
谓词和动作形成一个布尔表达式,通过短路从左到右求值。
你的表情:
find . -delete -name "*.swp"
等同于 bash 表达式:
rm "$file" && [[ $file == *.swp ]]
这将删除文件,如果删除成功,它会检查名称。
比较一下:
# Like: find . -name "*.swp" -delete
[[ $file == *.swp ]] && rm "$file"
在这种情况下,它会检查名称。如果检查通过,它会删除该文件。这就是你想要的。
此行为非常有用,因为它允许您编写更高级的控制流和分支:
find . -name '.git' -prune \
-o \( -name '*.xz' -exec xz -d {} \; \
-o -name '*.gz' -exec gzip -d {} \; \) \
-printf 'Successfully extracted %f\n'
此表达式将跳过任何 .git
目录,运行 xz -d
仅在 .xz 文件上,gzip -d
仅在 .gz 文件上,最后打印一条消息提取的文件。
至于你的文件,它们被删除了。通常不可能让他们回来。您必须从备份中恢复它们,或者,如果您走投无路,请尝试遵循 OS 和文件系统的文件恢复指南(但同样,这通常是不可能的)。
我尝试删除 vim 使用以下命令创建的所有 .swp
文件:
find . -delete -name "*.swp"
。
然后我的整个项目都被删除了... 谁能告诉我为什么?以及如何恢复项目?
如果您将命令更改为:
find . -name "*.swp" -delete
它只会删除它匹配的文件
find . -delete -name "*.swp"
等于rm -rf *
此问题是给程序员的警告信息。
find
谓词和动作形成一个布尔表达式,通过短路从左到右求值。
你的表情:
find . -delete -name "*.swp"
等同于 bash 表达式:
rm "$file" && [[ $file == *.swp ]]
这将删除文件,如果删除成功,它会检查名称。
比较一下:
# Like: find . -name "*.swp" -delete
[[ $file == *.swp ]] && rm "$file"
在这种情况下,它会检查名称。如果检查通过,它会删除该文件。这就是你想要的。
此行为非常有用,因为它允许您编写更高级的控制流和分支:
find . -name '.git' -prune \
-o \( -name '*.xz' -exec xz -d {} \; \
-o -name '*.gz' -exec gzip -d {} \; \) \
-printf 'Successfully extracted %f\n'
此表达式将跳过任何 .git
目录,运行 xz -d
仅在 .xz 文件上,gzip -d
仅在 .gz 文件上,最后打印一条消息提取的文件。
至于你的文件,它们被删除了。通常不可能让他们回来。您必须从备份中恢复它们,或者,如果您走投无路,请尝试遵循 OS 和文件系统的文件恢复指南(但同样,这通常是不可能的)。