【问题标题】:Remove file without case sensivity删除不区分大小写的文件
【发布时间】:2013-09-02 15:46:55
【问题描述】:

我有以下 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”上编译,删除.dosbox 路径中的“file.pas”。但我想做点别的:“删除 .exe 文件”。如果我这样做,问题如下:tpc file.pas turbo pascal 编译FILE.EXE,然后.dosbox/TP/BIN/$(basename $1 .pas).EXE 正在尝试删除“file.EXE”。问题是:“如何删除大写的.exe文件?

【问题讨论】:

  • find . -iname $(basename $1 .pas).EXE -delete
  • 太棒了。有用。谢谢!
  • @AnsgarWiechers:完成,谢谢。 :-)

标签: linux bash file function


【解决方案1】:

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

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

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

【讨论】:

  • 如果您的目录树结构较深,这可能需要很长时间。
【解决方案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。

【讨论】:

  • 这是优雅的解决方案。
  • 这是我要找的。​​span>
【解决方案3】:

查看 shopt 1 上的 Bash 文档

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多