1

我有以下 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“文件.pas”

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

4

3 回答 3

3

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

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

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

于 2013-09-02T16:01:49.580 回答
2

查看shopt 1上的 Bash 文档

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

shopt -s extglob nocaseglob
rm .dosbox/TP/BIN/$(basename $1 .pas).EX
shopt -u nocaseglob
于 2013-09-02T15:57:09.573 回答
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"
}

有关所用方法的更多信息,请参阅参数扩展

于 2013-09-02T16:06:46.803 回答