如何删除特定文件夹中具有特定扩展名的所有文件?

And*_*rew 47 shell bash directory rm

如果我将当前/工作目录(使用 导航到它cd)设置为某个特定目录,然后键入:

rm *.xvg
Run Code Online (Sandbox Code Playgroud)

这个命令会做什么?这是真的,上面的命令将删除文件扩展名为.xvg 只有在工作目录?

在询问之前,我对尝试此操作感到紧张,因为我想绝对确定上述命令只会删除位于 WORKING DIRECTORY 中的.xvg文件。

Lev*_*von 52

是的,rm *.xvg在您指定的扩展删除文件当前目录。

确保您确实在要删除文件的目录中的一个方法是使用pwd将显示您的当前目录的命令,然后ls验证您是否找到了您想要的文件。

如果您对发出rm命令有点担心,您可以做两件事:

  1. 键入ls *.xvg以查看此命令将影响哪些文件的列表。

  2. 除非您有很多文件,否则您始终可以使用-i命令行开关 for rm(也存在 forcpmv)。rm -i *.xvg如果可以删除它,使用会提示您输入每个单独的文件,因此您可以确定没有任何您不期望的内容被删除。(如果您有很多文件,这将很乏味:)

  • 另外:`rm -f {*.xvg,.*.xvg}` 也可以删除隐藏文件。和 `rm -R -f {*.xvg,.*.xvg}` 也删除目录。 (4认同)

use*_*own 34

您不需要导航到目录,只需使用

rm /some/dir/*.xvg 
Run Code Online (Sandbox Code Playgroud)

如果路径中有拼写错误或类似错误,其中 /som/dir 不存在:

cd /som/dir
rm *.xvg
Run Code Online (Sandbox Code Playgroud)

会意外删除当前目录中的所有 .xvg 文件。第一个命令不会,你不需要再次 cd 回来。

另一种方法是使用查找:

find /some/dir/ -maxdepth 1 -type f -name "*.xvg" -delete 
Run Code Online (Sandbox Code Playgroud)