Bash脚本:使用单引号将变量输出到rm

时间:2015-05-14 03:18:10

标签: bash

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

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

然而,输出总是说

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

很明显,bash脚本在将变量传递给rm时为我添加单引号。如何删除单引号?

1 个答案:

答案 0 :(得分:2)

使用Bash

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

$ ls
a.py  b.py  c.doc

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

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

!(*.doc)是一个扩展的shell glob或extglob,它匹配除.doc之外的所有文件。

extglob功能需要现代bash

使用find

可替换地:

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