移动所有不以特定字母开头的文件

4

我正尝试将文件从一个文件夹移动到另一个位置。我想移动除了以“c”开头的文件以外的所有文件。

这是我的尝试:

mv a* b* d*...............z*

显然这是错误的方法。有人能告诉我正确的方法吗?我正在使用Linux(RHEL 6)。

2
一个更简单的方法,不需要额外的知识,只需使用您已经掌握的技能即可:mkdir /tmp/c; mv c* /tmp/c; mv * /another/location; mv /tmp/c/* . 也就是说,反转您的问题。隐藏所有以“c”开头的内容,处理剩余的文件,然后取消隐藏“c”文件。 - user229044
这很不正统,但是有效。不错!! - Abhishek dot py
2个回答

15

由于[^c]表示“除了c之外的所有内容”,您可以使用以下表达式:

mv [^c]* another_dir

如果我需要留下两个字母该怎么办?mv [^c]* [^d]* another_dir

在这种情况下,请使用以下命令:

mv [^cd]* another_dir

测试

当使用这些正则表达式时,请查看ls的输出:

$ ls
a23  abc  b23  bd23  c23  cd23  d23
$ ls [^c]*
a23  abc  b23  bd23  d23
$ ls [^cd]*
a23  abc  b23  bd23

如果我需要留下两个字母怎么办?mv [^c]* [^d]* another_dir? - Abhishek dot py
1
在这种情况下,mv [^cd]* another_dir 将使其移动,因为 [^xyz] 语法的意思是:除了匹配 x、y 或 z 之外的所有内容。 - fedorqui

2
这个怎么样:
mv [a-b,d-z]* destination

1
谢谢,这帮助我解决了我的问题——移动所有以字母开头但不以数字开头的项目。 - Anna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接