我想浏览许多目录并删除除了符合某些条件的文件以外的所有文件。我有以下bash脚本:
#!/bin/bash
for i in */
do
cd $i
rm !(*M.*)
cd ..
done
但是,当我运行脚本时,我收到以下错误:
script1.sh: line 5: syntax error near unexpected token `('
script1.sh: line 5: ` rm !(*M.*)'
可能有什么不对?我使用的是Ubuntu 14.04。
感谢您的帮助。
答案 0 :(得分:2)
我认为你应该启用 extglob 来使用反转或负面通配符:
shopt -s extglob
请注意,您可以随时保持此状态,这无害。
也就是说,您不必在代码中使用循环,而是可以直接放入脚本中:
rm */!(*M.*)
您可以访问此帖子了解其他解决方案: here