使用命令行批量重命名
Batch rename with command line
我有一些文件:file1.txt
、file2.txt
,我想像这样重命名它们:file1.something.txt
和 file2.something.txt
我寻找了一些类似的问题,然后想到了这个:
for i in file*.txt; do echo mv $i file*.something.txt; done
但不幸的是输出是:
mv file1.txt file*.something.txt
mv file2.txt file*.something.txt
因此只创建了 1 个文件。
可以请人帮忙吗?
(我使用的是 macbook air,我不确定这是否相关)
非常感谢
试试这个:
rename -n 's/\.txt/something.txt' *
(当你的测试没问题时移除 -n 开关)
有其他同名工具可能无法执行此操作,因此请小心。
如果你运行以下命令(GNU
)
$ file "$(readlink -f "$(type -p rename)")"
你得到了
这样的结果
.../rename: Perl script, ASCII text executable
且不包含:
ELF
那么这似乎是正确的工具 =)
如果不是,将其设为 Debian
的默认值(通常已经是这种情况)和 Ubuntu
之类的派生词:
$ sudo update-alternatives --set rename /path/to/rename
(将 /path/to/rename
替换为您的 perl's rename
命令的路径。
如果你没有这个命令,搜索你的包管理器来安装它或者do it manually
最后但同样重要的是,这个工具最初是由 Perl 之父 Larry Wall 编写的。
我有一些文件:file1.txt
、file2.txt
,我想像这样重命名它们:file1.something.txt
和 file2.something.txt
我寻找了一些类似的问题,然后想到了这个:
for i in file*.txt; do echo mv $i file*.something.txt; done
但不幸的是输出是:
mv file1.txt file*.something.txt
mv file2.txt file*.something.txt
因此只创建了 1 个文件。 可以请人帮忙吗? (我使用的是 macbook air,我不确定这是否相关) 非常感谢
试试这个:
rename -n 's/\.txt/something.txt' *
(当你的测试没问题时移除 -n 开关)
如果你运行以下命令(GNU
)
$ file "$(readlink -f "$(type -p rename)")"
你得到了
这样的结果.../rename: Perl script, ASCII text executable
且不包含:
ELF
那么这似乎是正确的工具 =)
如果不是,将其设为 Debian
的默认值(通常已经是这种情况)和 Ubuntu
之类的派生词:
$ sudo update-alternatives --set rename /path/to/rename
(将 /path/to/rename
替换为您的 perl's rename
命令的路径。
如果你没有这个命令,搜索你的包管理器来安装它或者do it manually
最后但同样重要的是,这个工具最初是由 Perl 之父 Larry Wall 编写的。