如何cp所有不以abc开头的东西?

时间:2013-09-01 10:07:18

标签: bash

请不要给我一个利用grep或ls或sed等其他命令的解决方案。

我想知道带有正则表达式的cp是否可以执行此操作。

3 个答案:

答案 0 :(得分:5)

cp(1)本身没有“正则表达式”支持;你所依赖的功能可能是Bash中的Pathname Expansion(globbing)。检查bash(1)联机帮助页以查找这样的extglob语法:

shopt -s extglob
cp !(abc*) destination/

答案 1 :(得分:3)

cp -t elsewhere [^a]* a[^b]* ab[^c]*

请注意:

  • 根本不涉及正则表达式
  • 涉及shell globbing,但是
  • bash而不是cp
  • 执行
  • abc*
  • 的手动反转

答案 2 :(得分:0)

嗯,你没有禁止发现,所以你去了:

find . -maxdepth 1 -type f ! -name "abc*" -exec cp '{}' dest/ \;