我正在尝试将参数传递给bash脚本中的rm以自动清理系统。例如,我要删除* .doc文件以外的所有内容。所以我写了下面的代码。
#!/bin/bash
remove_Target="!*.txt"
rm $remove_Target
但是,输出总是说
rm: cannot remove ‘!*.txt’: No such file or directory
当将变量传递给rm时,很明显bash脚本为我添加了单引号。如何删除单引号?
假设我们有一个包含三个文件的目录
$ ls
a.py b.py c.doc
删除除*.doc
以下内容外的所有内容:
$ shopt -s extglob
$ rm !(*.doc)
$ ls
c.doc
!(*.doc)
是扩展的外壳程序glob,或extglob
,匹配以结尾的文件以外的所有文件.doc
。
extglob功能需要现代的bash
。
或者:
find . -maxdepth 1 -type f ! -name '*.doc' -delete
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句