老哥们,为什么我这行命令就删库了啊!求助

2020-07-15 10:04:44 +08:00
 CatCode

命令如下:(危险命令请勿模仿

# 危险命令请勿模仿
find ./ -type d -print0 -name '.git' | xargs -0 -s1024 /bin/rm -rf

危险命令请勿模仿

原本的想法:这个目录是别的 git 库 clone 过来的,因为所有必要的文件都已经 checkout 出来了。为了在后面遍历文件的步骤中,减少遍历到不必要的文件,于是打算删掉所有名为.git的目录。

然而,当我运行了这个命令,本目录下所有的子目录都被删除了。我就懵逼了,为啥?

7204 次点击
所在节点    Linux
33 条回复
larisboy
2020-07-15 10:11:31 +08:00
楼主不先试试 find ./ -type d -print0 -name '.git' 出来的是什么?
echo1937
2020-07-15 10:13:16 +08:00
我试验了一下,
find ./ -type d -print0 -name '.git' 似乎真正的左右是 find ./ -type d -print0
find ./ -type d -name '.git' 才是查找.git 的目录

问题应该在这里.
3gs
2020-07-15 10:15:18 +08:00
我猜 -print0 后面的参数会被忽略,应该放后边
larisboy
2020-07-15 10:16:21 +08:00
find path -option [ -print ] [ -exec -ok command ] {} \;


-print 应该 option 后面
guanhui07
2020-07-15 10:19:03 +08:00
还是要谨慎些 打印出来看看啥
dalidali
2020-07-15 10:21:06 +08:00
老哥 艺高人胆大啊
CatCode
2020-07-15 10:21:21 +08:00
感谢各位,我重新 clone 了,把-print0 放后面就好了
我才知道 xargs 的参数是有先后顺序的
reus
2020-07-15 10:21:56 +08:00
前几天还有个头条面试官非要说 find 才是正确答案来着?

find 这种上古东西还是算球了,参数位置影响输出的,垃圾设计。
sonice
2020-07-15 10:24:39 +08:00
@reus 麻烦给个现代一点的命令让我开开眼界
DJQTDJ
2020-07-15 10:27:43 +08:00
$ find . -name '*.bak' -print0 | xargs -0 rm

艺高人胆大。
defunct9
2020-07-15 10:27:44 +08:00
rust 的 fd
tankren
2020-07-15 10:33:07 +08:00
为什么上来就要用组合命令呢 不应该先看看前面返回了啥?
felixcode
2020-07-15 10:47:20 +08:00
find 我通常用-exec 来做,貌似好控制一些,还可以先不加-exec 查看一下。
lovecy
2020-07-15 10:48:30 +08:00
这种操作,运行前打印出来检查下先。。
当然最好还是先统一挪动到备份文件夹,然后一起删除
securityCoding
2020-07-15 10:50:16 +08:00
牛批牛批
xuanbg
2020-07-15 10:50:38 +08:00
git 本地库删掉没事,再 clone 一次就好了。远程库删掉也没啥,再推送上去就完了。
reus
2020-07-15 10:54:28 +08:00
whasyt
2020-07-15 11:19:06 +08:00
find ./ -type d -name '.git' |xargs rm -rf
huangmingyou
2020-07-15 11:41:16 +08:00
find > log.txt ; 这样会安全点。
ETiV
2020-07-15 11:43:37 +08:00
@CatCode

是 find 的参数有顺序,不是 xargs

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/690137

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX