当我尝试删除以tmp开头的所有目录时, 我用了这个命令:
find -type d -name tmp* -exec rmdir {} \;
它可以解决这个问题,但是这个命令正在退出时出现错误代码:
find: `./tmp09098': No such file or directory
导致我的构建失败的原因。
有人能告诉我如何在不收到错误的情况下删除这些文件夹吗?
在尝试@anubhava建议并引用' temp *'之后,
find -type d -name 'tmp*' -exec rmdir {} \;
我仍然得到同样的错误:
find: `./tmp0909565g': No such file or directory
find: `./tmp09095': No such file or directory
运行时:
find -type d -name 'tmp*' -exec ls -ld '{}' \;
结果如下:
drwxr-xr-x 2 root root 4096 Jun 16 10:08 ./tmp0909565g
drwxr-xr-x 2 root root 4096 Jun 16 10:07 ./tmp09095
drwxr-xr-x 2 root root 4096 Jun 16 10:08 ./tmp09094544656
答案 0 :(得分:4)
您应引用该模式,否则它将在命令行上由shell扩展:
find . -type d -name 'tmp*' -mindepth 1 -exec rm -rf '{}' \; -prune
-prune
导致find
不会进入当前文件/目录。
答案 1 :(得分:1)
这对我有用:
#! /bin/bash
tmpdirs=`find . -type d -name "tmp*"`
echo "$tmpdirs" |
while read dir;
do
echo "Removing directory $dir"
rm -r $dir;
done;