删除不区分大小写的文件

时间:2013-09-02 15:46:55

标签: linux bash file function

我有以下bash功能:

function tpc()
{
    cp $1 .dosbox/TP/BIN/
    dosbox -c "TPC.EXE $1"
    rm .dosbox/TP/BIN/$1
    #rm .dosbox/TP/BIN/$(basename $1 .pas).EXE
}

主要目的是:

tpc“file.pas”

然后它编译“dosbox”,删除.dosbox路径中的“file.pas”。但我想做点其他事情:“删除.exe文件”。如果我这样做,问题如下:tpc file.pas turbo pascal编译FILE.EXE,然后.dosbox/TP/BIN/$(basename $1 .pas).EXE正在尝试删除“file.EXE”。问题是:“如何删除大写.exe文件?

3 个答案:

答案 0 :(得分:3)

find命令有一个iname开关,使搜索不区分大小写。

find . -iname $(basename $1 .pas).EXE -delete

还有delete开关,用于删除找到的文件。如果要将搜索限制在特定目录下的文件,请将.替换为目录路径。

答案 1 :(得分:2)

查看shopt 1

上的Bash文档

你想做的事情可能是这样的:

shopt -s extglob nocaseglob
rm .dosbox/TP/BIN/$(basename $1 .pas).EX
shopt -u nocaseglob

答案 2 :(得分:2)

也许你可以这样做:

function tpc()
{
    cp "$1" .dosbox/TP/BIN/
    dosbox -c "TPC.EXE $1"
    rm ".dosbox/TP/BIN/$1"
    REMOVE=${1^^} REMOVE=${REMOVE##*/} REMOVE=${REMOVE%.???}.EXE
    rm ".dosbox/TP/BIN/$REMOVE"
}

有关所用方法的详细信息,请参阅Parameter Expansion