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