【问题标题】:Move all files except specified folder移动指定文件夹以外的所有文件
【发布时间】:2018-07-01 10:17:20
【问题描述】:

我正在尝试使用脚本将当前目录的所有内容移动到当前目录中的新文件夹

mv !\(.svn\|$line\|.\|..\) $line

错误是

mv: cannot stat '!(.svn|RSSIFXServicesCommon|.|..)': No such file or directory

我将命令回显到输出,如果我自己复制并执行命令,它就可以工作。

我尝试启用 extglob

【问题讨论】:

标签: linux shell mv


【解决方案1】:

使用扩展正则表达式 (shopt -s extglob),无需引用您的正则表达式:

mkdir -p /tmp/t/4
touch /tmp/t/{1,2,3}
shopt -s extglob
cd /tmp/t
mv !(4|.|..) 4

如果我把它放在一个 shell 脚本中,这也可以工作。

【讨论】:

  • mv: cannot stat '!(4|.|..)': No such file or directory
  • 那是哪个外壳?
  • 它的 bash 但它在 MingW64 上运行
  • 这听起来不像我在这里使用的 bash 版本。如果 extglob 不起作用,bash 应该解释 '!'作为历史扩展,您应该收到 event not found 消息(除非您的 bash 甚至禁用了历史扩展?)。
  • 如果未设置 extglob,它正在解释“!”正如你所说的之前的活动。但是我已经设置了 extglob,当我运行命令 mv !(4|.|..) 4 时,它给出了以下错误 mv: cannot stat '!(4|.|..)': No such file or directory
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
  • 2010-10-14
  • 1970-01-01
  • 2010-10-21
相关资源
最近更新 更多