Shell通过Args删除文件扩展名
我希望通过将扩展名类型作为参数来删除文件夹中的文件扩展名 下面是我的代码,它没有像我预期的那样工作Shell通过Args删除文件扩展名,shell,Shell,我希望通过将扩展名类型作为参数来删除文件夹中的文件扩展名 下面是我的代码,它没有像我预期的那样工作 if [ $# -ne 1 ] then echo -e "\nUsage: $0 Ext" echo -e "\nExt - Refers to the extension you want to remove" echo -e "\nExample1: $0 .txt\nExample2: $0 .doc\nExample3: $0 .pdf\n" exit 1 fi
if [ $# -ne 1 ]
then
echo -e "\nUsage: $0 Ext"
echo -e "\nExt - Refers to the extension you want to remove"
echo -e "\nExample1: $0 .txt\nExample2: $0 .doc\nExample3: $0 .pdf\n"
exit 1
fi
ext=$1
for i in *$ext
do
echo $i
filename=${i%\$ext}
echo $i
done
您的代码几乎正确,但需要删除转义并回显文件名。下面的代码还显示了basename的用法:
for i in *$ext
do
echo $i
filename1=${i%$ext}
filename2=$(basename $i $ext)
echo $filename1
echo $filename2
done
您可以使用此脚本替换扩展名
#!/bin/bash
if [ $# -ne 1 ]
then
echo -e "\nUsage: $0 Ext"
echo -e "\nExt - Refers to the extension you want to remove"
echo -e "\nExample1: $0 .txt\nExample2: $0 .doc\nExample3: $0 .pdf\n"
exit 1
fi
ext=$1
for i in *$ext
do
echo $i
new_name=`echo $i | sed 's/.'$ext'//g'`
echo $new_name
done
您可以使用以下代码:
#!/bin/bash
if [ $# -ne 1 ]
then
echo -e "\nUsage: $0 Ext"
echo -e "\nExt - Refers to the extension you want to remove"
echo -e "\nExample1: $0 .txt\nExample2: $0 .doc\nExample3: $0 .pdf\n"
exit 1
fi
ext=$1
for i in *$ext
do
echo $i
new_name=`echo $i |rev|cut -d'.' -f2-|rev
echo $new_name
done