【发布时间】:2018-12-03 13:21:09
【问题描述】:
我正在尝试从目录中删除一些文件和文件夹。命令(来自here):
rm -rf !(file_i_don't_want_to_remove|other|other_one)
在终端中运行良好,但如果我尝试在脚本中使用它(使用 vim 创建,2 行):
#!/bin/bash
rm -rf !(one|two)
./file.sh: línea 2: error sintáctico cerca del elemento inesperado `('
翻译:
./file.sh:第 2 行:意外元素 `(' 附近的语法错误
为什么?
PS。我已经寻找了其他同名的问题,但它们对于每个脚本都太具体了,而且似乎与我的问题不同。
【问题讨论】:
-
只是一个建议,为什么不遍历所有要删除的文件,例如-->
.txt或.jpg等并删除它们,只是一个建议。 -
脚本中的
bash是否与终端中的一样新?我认为您还需要设置shopt -s extglob。 -
@RavinderSingh13 可能是递归的,恕我直言,更多行没有优势。
-
@MarkSetchell 我完全不知道。我刚刚找到该命令,在我的终端中尝试过它并且它有效,然后尝试在脚本中使用它。我从来没有使用过
shopt命令,也不知道它有什么作用。打算研究一下。谢谢你的线索。
标签: bash