我只是 regex
的初学者,所以如果这个问题太简单,请原谅我。
我想问的是我有一堆files
在一个目录中,我移动了一些以 numbers
开头的文件类型为 pdf
。如何使用正则表达式 mv
命令以及 regex
是什么? .
最佳答案
如果您使用的是 Linux 命令提示符,实际上您没有使用 Regex ,但您正在使用 GLOB相反,这是不同的。仔细阅读一下。 GLOB 不能采用复杂的模式,例如您所描述的模式。您需要使用真正的正则表达式。
对于您的情况,您可以在 ls
的输出上使用 grep
命令来查找满足您要求的文件,然后对它们调用 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 - 移动以编号开头且类型为 pdf 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18841203/