-2

我只是一个初学者regex,所以如果这个问题太简单了,请原谅我。
我想问的是我在一个目录中有一堆文件,我移动了一些以和 类型files开头的文件。如何在命令中使用正则表达式以及.numberspdfmvregex

4

2 回答 2

3

如果您使用的是 linux 命令提示符,实际上您并没有使用Regex,而是使用GLOB表示法,这是不同的。仔细阅读。GLOB 不能采用您描述的那种复杂模式。您需要使用真正的正则表达式。

对于您的情况,您可以grep在输出中使用命令ls来查找满足您要求的文件,然后调用mv它们。像这样的东西:

while read fileName; do mv $fileName destination_folder; done < <(ls -1 | grep -E '[0-9].*\.pdf')

让我们分解一下:

while read fileName; do
    mv $fileName destination_folder;
done < <(ls -1 | grep -E '[0-9].*\.pdf')

所以基本上你使用循环通读目录列表while,它从最后一行的输出中获取输入ls -1 | grep -E '[0-9].*\.pdf'。需要使用while循环(而不是更简单的for循环)来满足包含空格的文件名。

现在该命令ls -1 | grep -E '[0-9].*\.pdf'基本上只是列出文件名,并且只抓取那些匹配指定的 RegEx 模式的文件名。

于 2013-09-17T04:50:48.740 回答
2

你也可以使用find

find . -maxdepth 1 -name "[0-9]*.pdf" -exec mv {} destination \;
于 2013-09-17T05:36:27.320 回答