我一直在寻找一个Linux命令行来重命名一堆文件。一个班轮重命名一堆文件
pattern1.a pattern1.b pattern1.c ...
一旦执行该命令,我应该得到
pattern2.a pattern2.b pattern2.c ...
我一直在寻找一个Linux命令行来重命名一堆文件。一个班轮重命名一堆文件
pattern1.a pattern1.b pattern1.c ...
一旦执行该命令,我应该得到
pattern2.a pattern2.b pattern2.c ...
for i in pattern1.*; do mv -- "$i" "${i/pattern1/pattern2}"; done
在你运行它,在mv
面前坚持一个echo
,看看它会做。
有很多方法来剥皮这只猫。第一
find . -print | sed -ne '/^\.\/pattern1\(\..*\)/s//mv "&" "pattern2\1"/p'
由于Kerrek与他的回答表明,这一个:如果你喜欢你的模式是一个正则表达式,而不是一个fileglob,你想要做的改变递归你可以使用这样的事情告诉你它会做什么。一旦您熟悉这些命令,就可以通过外壳管理输出(即,将| sh
添加到最后)。
这个工作对我来说:
[[email protected] ~]$ ls -l foo.*
-rw-r--r-- 1 ghoti wheel 0 Mar 26 13:59 foo.php
-rw-r--r-- 1 ghoti wheel 0 Mar 26 13:59 foo.txt
[[email protected] ~]$ find . -print | sed -ne '/^\.\/foo\(\..*\)/s//mv "&" "bar\1"/p'
mv "./foo.txt" "bar.txt"
mv "./foo.php" "bar.php"
[[email protected] ~]$ find . -print | sed -ne '/^\.\/foo\(\..*\)/s//mv "&" "bar\1"/p' | sh
[[email protected] ~]$ ls -l foo.* bar.*
ls: foo.*: No such file or directory
-rw-r--r-- 1 ghoti wheel 0 Mar 26 13:59 bar.php
-rw-r--r-- 1 ghoti wheel 0 Mar 26 13:59 bar.txt
[[email protected] ~]$
我们需要那里的“皮肤猫”隐喻吗? :D – 2017-07-19 10:56:48
如果你碰巧使用Linux,你也可以有一个perl脚本是/ usr/bin中/重命名基于更复杂的模式比外壳通配其甘蔗重命名文件许可证。
我的系统中的/ usr/bin/rename已记录在here中。它可以这样来使用:
rename "s/pattern1/pattern2/" pattern1.*
似乎许多other Linux environments有可能像这样使用不同rename
:
rename pattern1 pattern2 pattern1.*
检查man rename
系统的详细信息。
第二个重命名示例的竖起大拇指;在网上搜索并找不到问题为什么''s/pattern1/pattern2 /“'不起作用! – 2014-11-06 13:16:15
[重命名Unix中的多个文件]可能的重复(http://stackoverflow.com/questions/1086502/rename-multiple-files-in-unix) – 2012-03-28 18:45:41