如何在命令 rm *.jpg 中存储当前正在读取的文件名 *.jpg?

如何在命令 rm *.jpg 中存储当前正在读取的文件名 *.jpg?

我想使用*当前使用的文件名。如何获取文件的名称?

答案1

如果要使用*通常用作 bash 通配符的星号字符来选择多个文件,则需要用引号括住文件名或使用*反斜杠转义\。示例:

$ touch '*.jpg'
$ touch 'mypicture.jpg'
$ ls
'*.jpg'   mypicture.jpg
$ rm '*.jpg'
$ ls
mypicture.jpg

您还可以使用相同的脚本来\*.jpg代替'*.jpg'

答案2

*.jpg将扩展为当前目录下的每个 .jpg 文件。如果执行rm *.jpg,所有这些文件都将被删除。通配符的 shell 扩展*不会将结果存储为单独的变量,也不会为您提供在扩展集中引用单个结果的方法。

如果您希望对与通配符表达式匹配的每个文件进行操作,则可能需要使用 for 循环。使用循环可以将文件名分配给您在每次运行循环时选择的变量。例如:

for file in *.jpg; do
   echo "$file"
done

echo匹配的每个文件*.jpg。当然,您可以在循环内使用更复杂的命令,包括其他条件语句,例如if语句。

答案3

显示所有按*.jpg类型指示的文件:

ls *.jpg

该命令rm *.jpg将删除所有这些文件。

相关内容