分页: 1 / 1
求助批量修改文件名的问题
发表于 : 2013-08-21 11:57
由 allenny
想在命令行做批量修改文件名,执行以下语句:
for f in *; do mv $f `echo $f|tr ' ' '_'`; done
结果总是报类似以下的错误
mv: 目标"Flag_of_Zimbabwe.png" 不是目录
难道`echo $f|tr ' ' '_'`输出的是目录名?
Re: 求助批量修改文件名的问题
发表于 : 2013-08-21 12:55
由 ceclinux
bash的默认分割符号为空格,所以mv的时候会出现问题
脚本前面须加上
Re: 求助批量修改文件名的问题
发表于 : 2013-08-21 14:00
由 allenny
果然是这样,谢谢~~

Re: 求助批量修改文件名的问题
发表于 : 2013-08-21 16:39
由 eexpress
gprename吧。
Re: 求助批量修改文件名的问题
发表于 : 2013-08-23 0:22
由 lilydjwg
zsh 不会有这种问题。
这个需求,直接 perl-rename 's/ /_/g' * 。(命令名可能不同。)
Re: 求助批量修改文件名的问题
发表于 : 2013-08-30 6:13
由 aerofox
allenny 写了:想在命令行做批量修改文件名,执行以下语句:
for f in *; do mv $f `echo $f|tr ' ' '_'`; done
结果总是报类似以下的错误
mv: 目标"Flag_of_Zimbabwe.png" 不是目录
难道`echo $f|tr ' ' '_'`输出的是目录名?
给 $f 加上双引号就可以了,另外,如果是用 bash 或 zsh,可以不用 tr
代码: 全选
for f in *; do mv "$f" `"${f// /_}"; done
当然,用 prename 命令更方便。