我正在尝试重命名文件夹中的所有文件,并用空格替换下划线。
i.e. this_is_a_test --> this is a test
但不知何故我搞砸了报价
> for file in * ; do echo mv -v $file $(echo $file | sed 's/_/\\ /g') ; done
mv -v this_is_a_test this\ is\ a\ test
看起来还可以,但是如果我删除了“ echo”,就会mv
抱怨好像删除了反斜杠
> for file in * ; do mv -v $file $(echo $file | sed 's/_/\\ /g') ; done
mv: target ‘test’ is not a directory
有人可以指出我的方式的错误吗?
有一个小错误。使用"$newfile"
而不是$newfile
。您需要使用"
这是正确的。
for file in * ; do mv -v "$file" "$(echo $file | sed 's/_/\\ /g')" ; done
如果您有文件名this_is_a_test
,它将把文件重命名为this\ is\ a\ test
。
如果您要将文件重命名为this is a test
。使用下面的代码,
for file in * ; do mv -v "$file" "$(echo $file | sed 's/_/ /g')" ; done
""
编写良好的Shell脚本时,最好在内部使用变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句