我想浏览许多目录并删除所有文件,除了一些符合特定条件的文件。我有以下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。
谢谢你的帮助。
我认为您应该启用extglob以使用反向或负通配符:
shopt -s extglob
请注意,您可以一直保持此状态,这无害。
也就是说,您不必强制在代码中使用循环,而可以直接将其放入脚本中:
rm */!(*M.*)
您可以访问此帖子以获取其他解决方案:https : //unix.stackexchange.com/questions/78376/in-linux-how-to-delete-all-files-except-the-pattern-txt
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句