Bash 删除具有给定扩展名的文件

Bash 删除具有给定扩展名的文件,bash,shell,Bash,Shell,我想删除由用户指定扩展名的文件。我的问题是它打印“未找到”和“rm:无法删除'*.txt'” 尝试使用-z标志检查$ext变量是否为空。-e标志检查文件是否存在 #!/bin/bash echo Extension? read ext if [ ! -z $ext ] then rm *.$ext else echo Not Found fi 我还向rm命令添加了一个。这反映了通过延伸移除的愿望。否则,您将删除以用户输入结束的任何文件(即program.c和名为zodiac的

我想删除由用户指定扩展名的文件。我的问题是它打印“未找到”和“rm:无法删除'*.txt'”


尝试使用
-z
标志检查
$ext
变量是否为空。
-e
标志检查文件是否存在

#!/bin/bash
echo Extension?
read ext

if [ ! -z $ext ]
then
    rm *.$ext
else
    echo Not Found
fi

我还向
rm
命令添加了一个
。这反映了通过延伸移除的愿望。否则,您将删除以用户输入结束的任何文件(即program.c和名为zodiac的文件都将被删除)。

使用bash数组以确保正确处理空白

#!/bin/bash

# ask for ext until user enters one
ext=''
while [[ -z $ext ]]; do
    read -p 'Extension? ' ext
done

# find files
files=(*"$ext")
if [[ -e ${files[0]} )); then
    # delete files (-- prevents injection)
    rm -- "${files[@]}"
else
    # no files to delete
    echo "No files with extension: $ext"
fi
#!/bin/bash

# ask for ext until user enters one
ext=''
while [[ -z $ext ]]; do
    read -p 'Extension? ' ext
done

# find files
files=(*"$ext")
if [[ -e ${files[0]} )); then
    # delete files (-- prevents injection)
    rm -- "${files[@]}"
else
    # no files to delete
    echo "No files with extension: $ext"
fi