使用带有多个通配符的mv命令


1

我还是比较新的Linux,所以在菜鸟上放轻松,嗯?

我设置了脚本以根据文件名将媒体文件移动到特定目录。我使用通配符来实现这一点,但我需要使它更具体,以便它只移动我想要的。

例: mv /home/user/Downloads/*Horror* /home/user/Downloads/transmission/completed/Series/AHS/

我需要知道是否可以在单个移动命令中包含多个通配符。在前面的示例中,我希望脚本将所有American Horror Story剧集移动到AHS目录。该脚本有效,但如果我下载其他任何带有“恐怖”字样的内容,该文件也会被移动。

我问的是可能的,还是我应该使用的是一种不同的方法?


目前尚不清楚你想要什么。您的命令将所有带有“Horror”的文件作为名称的一部分移动,并且不会影响具有“恐怖”的文件,因为Unix文件名区分大小写。如果要同时移动两者,请在名称部分中使用*[hH]orror*{*Horror*,*horror*}
AFH 2014年

正如@AFH所说,目前尚不清楚你想要什么。什么是多个通配符?它可能有助于记住,mv永远不会看到通配符,shell会解释它们。你想mv看到什么命令行?另外,检查一下extglob,它可能对你有帮助。这是对bash中各种通配工具一个不错的解释。不会...... /美国\恐怖* .... / destdir做你想要的?
Rich Homolka 2014年

也许没有必要提出通配符。我希望能够根据2个不同的单词移动文件。我希望能够用“美国与恐怖”这个词来移动任何东西,而不是只移动名为“恐怖”的文件。这可能吗?
Brandon Hood

Answers:


0

尝试使用像这样的外卡*American*Horror*。您还可以在源路径中添加其他通配符,例如/usr/home/D*/*American*Horror*。根据下载目录中的内容,*A*H*可以使用与所需文件匹配的简单模式。

您可以使用模式匹配,例如*[aA]merican*[hH]orror*

我通常通过在其前面添加命令来回显命令echo,或者ls在运行实际命令之前使用与模式匹配的列表文件。这使得有机会在提交行动之前调整模式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.