移动以数字和pdf类型开头的文件

时间:2013-09-17 04:14:11

标签: regex linux

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

2 个答案:

答案 0 :(得分: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模式。

答案 1 :(得分:2)

您也可以使用find

find . -maxdepth 1 -name "[0-9]*.pdf" -exec mv {} destination \;