我在一个目录中有多个文件,例如: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
发布于 2017-07-21 17:12:55
我能够通过组合@dtrckd和@Sorpigal答案来替换目录中的文件名。
for file in `find -name "linux_*.mp4"`; do mv "$file" "${file/linux_/}" ; done
https://stackoverflow.com/questions/6911301
复制相似问题