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

时间:2018-11-17 21:54:06

标签: bash shell

我想删除具有用户扩展名的文件。我的问题是它显示“未找到”和“ rm:无法删除“ * .txt””

echo Extension?
read ext

if [ -e *$ext ]
then 
    rm *$ext
else
    echo Not Found
fi

2 个答案:

答案 0 :(得分:2)

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

#!/bin/bash
echo Extension?
read ext

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

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

答案 1 :(得分:0)

使用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