BASH脚本:带单引号的RM输出变量



我正在尝试将参数传递给bash脚本中的rm,以自动清洁我的系统。例如,我想删除除 *.doc文件以外的所有内容。所以我写了以下代码。

#!/bin/bash
remove_Target="!*.txt"
rm $remove_Target

但是,输出总是说

rm: cannot remove ‘!*.txt’: No such file or directory

显然,Bash脚本将变量传递给RM时为我添加了单引号。我如何删除单引号?

使用bash

假设我们有一个带有三个文件的目录

$ ls
a.py  b.py  c.doc

删除除 *.doc以外的所有:

$ shopt -s extglob
$ rm !(*.doc)
$ ls
c.doc

!(*.doc)是一个扩展的壳球,或 extglob,它匹配除 .doc中的所有文件。

以结尾。

ExtGlob功能需要现代bash

使用查找

或者:

find . -maxdepth 1 -type f ! -name '*.doc' -delete

相关内容

  • 没有找到相关文章

最新更新