我在一个目录中有多个文件,例如:linux_file1.mp4、linux_file2.mp4等等。如何使用shell移动这些文件,使其名称为file1.mp4、file2.mp4等。我有大约30个文件要移动到新名称。
发布于 2011-08-02 20:22:57
我喜欢mmv做这类事情
mmv 'linux_*' '#1'但您也可以使用rename。请注意,通常有两个语法完全不同的rename命令。一个是用Perl编写的,另一个是用util-linux分发的,所以我将它们区分为下面的"perl rename“和"util rename”。
使用Perl重命名:
rename 's/^linux_//' linux_*.mp4正如cweiske正确指出的那样。
使用util rename:
rename linux_ '' linux_*.mp4你怎么知道你有哪一个重命名?尝试运行rename -V;如果您的版本是util rename,它将打印版本号,如果是perl rename,它将无害地报告和unknown选项并显示使用情况。
如果您既没有rename也没有mmv,并且不想或不能安装它们,您仍然可以使用普通的旧shell代码来实现这一点:
for file in linux_*.mp4 ; do mv "$file" "${file#linux_}" ; done此语法适用于任何符合XPG4或更高版本的POSIX,目前基本上都是shell。
发布于 2011-08-02 19:35:40
$ rename 's/linux_//' linux_*.mp4发布于 2015-12-29 19:35:04
一种简单的原生方法,使用目录遍历
find -type f | xargs -I {} mv {} {}.txt将重命名每个文件,并在末尾添加扩展名.txt。
和parallelization的一种更通用的酷方式
find -name "file*.p" | parallel 'f="{}" ; mv -- {} ${f:0:10}trump${f:4}'https://stackoverflow.com/questions/6911301
复制相似问题