重命名目录中的所有文件

时间:2015-01-02 09:07:59

标签: linux file-rename

我正在尝试将文件重命名为: 的 Name1_searchstats_metrics_20141230T133000036.log 类似于: Name2_searchstats_metrics_20141230T133000036.log

我正在尝试:rename -n 's/\Name1_/\Name2_/' *.log但我收到错误:

bash: /usr/bin/rename: Argument list too long

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:5)

可能是最简单的解决方案,因为您使用bash是使用for循环迭代文件列表:

$ for i in *; do rename -n 's/Name1_/Name2_/' $i; done

如果需要,您还可以在命令中使用任何通配符来过滤文件,例如*.log

还有其他更复杂的方法来实现这一点,特别是如果您需要对文件名进行特定的字符串操作,即使用awkfind -exec,但希望这可以帮助您解决问题以清楚的方式。

根据@glglgl

的建议编辑回答

上述更全面详细的解释可以在超级用户身上找到: https://superuser.com/questions/31464/looping-through-ls-results-in-bash-shell-script

答案 1 :(得分:2)

如果参数列表对于linux命令来说太长,xargs通常会解决问题。

试试这个:

ls *.log | xargs rename -n 's/\Name1_/\Name2_/'