![如何在命令 rm *.jpg 中存储当前正在读取的文件名 *.jpg?](https://linux22.com/image/1005827/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%91%BD%E4%BB%A4%20rm%20*.jpg%20%E4%B8%AD%E5%AD%98%E5%82%A8%E5%BD%93%E5%89%8D%E6%AD%A3%E5%9C%A8%E8%AF%BB%E5%8F%96%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D%20*.jpg%EF%BC%9F.png)
我想使用*当前使用的文件名。如何获取文件的名称?
答案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
将删除所有这些文件。