regex - 移动以编号开头且类型为 pdf 的文件

标签 regex linux

我只是 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/

相关文章:

python - 以特殊字符开头或结尾的单词边界会产生意想不到的结果

python - 正则表达式排除特定模式python

python - Python 上的正则表达式在使用 char 类时打印垃圾

linux - 在 Linux 上从多个文件中删除冒号

regex - 动态域 htaccess 重定向

linux - 不带 shell 与内核通信

linux - Linux 内核出现段错误后会发生什么?

linux - 如何在 bash 中将其写在一行中

html - 从 Linux 服务器发送电子邮件作为 html - 内容类型和 html 标签在电子邮件中也可见

python - 匹配引用的 csv 中未转义的引号