如何在匹配模式和替换模式的子目录中查找所有文件

石英

我试图将我的一些视频文件移到新的子目录中,同时也在我的Unraid系统上重命名它们。这些文件都遵循类似的命名约定:

featurette name-featurette.mkv

我想将这些文件从当前目录移动到子目录,并按以下方式重命名它们:

featurettes/featurette name.mkv 

我能够使用find和execdir创建目录并重新定位文件:

find . -type f -name *-featurette.mkv -maxdepth 2 -execdir mkdir ./featurettes/ \;
find . -type f -name *-featurette.mkv -maxdepth 2 -execdir mv {} ./featurettes/ \;

我正在为重命名而苦苦挣扎。我已经尝试过重命名命令,但是无法使其在Featurettes目录中正常工作,更不用说从上面的两个目录中执行该命令了。我在Featurettes目录中尝试了以下命令:

rename \-featurette.mkv .mkv *

但是我得到了错误:

invalid option -- 'f'

我以为通过避开破折号可以避免该问题,但似乎不起作用。任何有关如何从与之匹配的子目录中的所有文件中删除此模式的建议,将不胜感激。

比那

从中man rename可以看到,此命令获取选项和3个位置参数:

内容提要重命名[选项]表达式替换文件...

因此,在您的情况下,第一个参数将被解释为一个选项。您可以使用以下语法:

rename -- '-featurette' '' *-featurette.mkv

重命名文件。--表示所有选项均已结束,其后仅是位置参数。


总体而言,要通过一个mv进程复制文件并重命名它们:

mkdir -p target/dir
find . -maxdepth 2 -type f -name "*-featurette.mkv" -exec mv -t target/dir {} +
cd target/dir && rename -- '-featurette' '' *-featurette.mkv

如果要重命名位于不同子目录中的许多文件,则可以使用以下语法:

find . -name "*-featurette.mkv" -print0 | xargs -r0 rename -- '-featurette' ''  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在与命令行中的其他模式匹配的目录中“查找”与模式匹配的文件?

在目录和子目录中查找所有零字节文件

如何在bash中gzip所有子目录中的所有文件

如何在hadoop hdfs中列出目录及其子目录中的所有文件

如何在Windows中的目录和子目录中查找所有头文件

如何在子树子目录中“反转” gitignore文件模式?

如何在所有子目录中查找文件并将其复制?

如何在目录/子目录下的所有文件中搜索文本

如何在不删除bash目录的情况下删除目录中的所有文件和子目录?

如何在目录及其子目录中的所有php文件中搜索和替换文本

如何删除Windows中与给定通配符匹配的子目录中的所有文件?

“查找”或“ grep”文件名以匹配目录和子目录中的模式

查找目录及其子目录中的所有文件

如何使用vim打开当前目录和所有子目录中的所有文件?

如何在文件夹中查找与特定模式匹配(或不匹配)的所有文件?

如何打开与子目录中的模式匹配的文件

如何重命名(取消隐藏)目录中的所有文件和子目录?

删除所有子目录中的匹配文件

如何在不使用find的情况下在当前目录的直接子目录中获取名称中包含某些模式的所有文件?

如何在php中列出目录,子目录和所有文件

删除除与特定模式匹配的子目录以外的所有子目录

Mac:如何递归地在子目录中查找最大的文件(忽略所有目录)

如何在父目录linux的子目录中查找和复制文件

ZSH 和 globstar 匹配子目录中的所有文件,但不匹配目录

交互式查找和替换所有文件,包括使用 Vim 的子目录中的文件

如何在 Linux 上查找包含特定文本但不在子目录中的所有文件?

获取所有匹配模式的子目录

如何在子目录中只测试匹配给定模式的`go test`?

在目录中查找所有匹配模式的文件并复制找到的子目录和文件