我正在尝试重命名文件夹中的所有文件,用空格替换下划线。
i.e. this_is_a_test --> this is a test
Run Code Online (Sandbox Code Playgroud)
但不知何故我搞砸了引用
> for file in * ; do echo mv -v $file $(echo $file | sed 's/_/\\ /g') ; done
mv -v this_is_a_test this\ is\ a\ test
Run Code Online (Sandbox Code Playgroud)
看起来不错,但是如果我删除“回声”,mv就像删除了反斜杠一样抱怨
> for file in * ; do mv -v $file $(echo $file | sed 's/_/\\ /g') ; done
mv: target ‘test’ is not a directory
Run Code Online (Sandbox Code Playgroud)
有人可以指出我方法的错误吗?
使用rename:
rename -n 's/_/ /g' *
Run Code Online (Sandbox Code Playgroud)
如果一切正常,请移除-n开关:
rename 's/_/ /g' *
Run Code Online (Sandbox Code Playgroud)
rename -n 's/_/ /g' *
Run Code Online (Sandbox Code Playgroud)
有一个小错误。使用"$newfile"而不仅仅是$newfile。你需要使用"
这是正确的。
for file in * ; do mv -v "$file" "$(echo $file | sed 's/_/\\ /g')" ; done
Run Code Online (Sandbox Code Playgroud)
如果你有文件名,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
Run Code Online (Sandbox Code Playgroud)
""在编写好的 shell 脚本时在内部使用变量是一个很好的做法。
| 归档时间: |
|
| 查看次数: |
22602 次 |
| 最近记录: |