我想删除具有用户扩展名的文件。我的问题是它显示“未找到”和“ rm:无法删除“ * .txt””
echo Extension?
read ext
if [ -e *$ext ]
then
rm *$ext
else
echo Not Found
fi
答案 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