使用find和xargs删除带有rm的文件

时间:2017-03-16 07:43:40

标签: linux xargs rm

当我这样做时

rm *.txt

-f

我被提示输入每个文件,因为我没有为rm指定find . -type f -name '*.txt' | xargs rm 选项。

但是当我这样做时:

String path = MediaStore.Images.Media.insertImage(
                    mContext.getContentResolver(), mImageBitmap, "Shared image", null);

return Uri.parse(path);

在没有确认的情况下删除文件。

这背后的逻辑是什么?是否有可能在某些文档中找到原因?我无法解释为什么会出现这种情况。

2 个答案:

答案 0 :(得分:6)

你有一个rm命令的别名设置为'rm -i'。因此,如果直接按

中的方式调用命令
rm file.txt

rm *.txt

别名将被扩展。如果您将使用xargs调用它,如

find . -type f -name '*.txt' | xargs rm

rm作为一个简单的字符串参数传递给xargs,后来由xargs调用,没有别名替换shell。 您的别名可能在〜/ .bashrc中定义,以防您要删除它。

答案 1 :(得分:0)

根据您的xargs版本,您可能会使用--no-run-if-empty GNU扩展选项:

find . -type f -name '*.txt' | xargs  --no-run-if-empty  rm -rf