2

拡張子の種類を引数として取得して、フォルダー内のファイル拡張子を削除したいと考えています。

以下は私のコードで、期待どおりに動作していません。

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
4

3 に答える 3

0

コードはほぼ正しいですが、エスケープを削除してファイル名をエコーする必要があります。以下のコードも basename の使用法を示しています。

for i in *$ext
do
    echo $i
    filename1=${i%$ext}
    filename2=$(basename $i $ext)
    echo $filename1
    echo $filename2
done
于 2012-12-20T07:26:07.763 に答える
0

以下のコードを使用できます。

#!/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
于 2012-12-20T09:32:10.167 に答える
0

このスクリプトを使用して拡張子を置き換えることができます

#!/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
于 2012-12-20T07:37:48.663 に答える