我只是regex
的初学者,所以如果这个问题太容易,请原谅我。
我想问的是,我在目录中有一堆files
,我移动了一些以numbers
和pdf
类型开头的文件。如何使用带有mv
命令的正则表达式以及regex
。
答案 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 \;