Language agnostic 如何从当前目录中的所有文件名中删除空格
正如标题所示,如何从当前目录中的所有文件中删除空格 范例Language agnostic 如何从当前目录中的所有文件名中删除空格,language-agnostic,whitespace,filenames,Language Agnostic,Whitespace,Filenames,正如标题所示,如何从当前目录中的所有文件中删除空格 范例 文件名.mp3应变为文件名.mp3 注: 我愿意接受任何语言的回答 ${i//[:space:]}删除字符串中的所有空格。使用sh ls -1 | awk '/ /{a=$0;gsub(/ /,"");b="mv \""a"\" "$0;system(b);}' for file in *' '*; do [ -f "$file" ] && mv "$file" "`echo $file|tr -d '[:space
文件名.mp3
应变为文件名.mp3
注:
- 我愿意接受任何语言的回答
${i//[:space:]}
删除字符串中的所有空格。使用sh
ls -1 | awk '/ /{a=$0;gsub(/ /,"");b="mv \""a"\" "$0;system(b);}'
for file in *' '*; do [ -f "$file" ] && mv "$file" "`echo $file|tr -d '[:space:]'`"; done
使用perl 5.14(将y///dr
替换为do{($x=$\u)=~ y///d;$x}
,对于旧版本)
仅当旧文件名包含空格时,才会重命名旧文件 而且新文件还不存在
for old in *; do
new="${old//[[:space:]]}"
[[ $old = $new || -f $new ]] || mv "$old" "$new"
done
我是python的忠实粉丝,因此这里有一个python脚本,用于执行同样的操作
import os
for f in os.listdir("."):
r = f.replace(" ","")
if( r != f):
os.rename(f,r)
因为你是语言不可知论者,这里有一个ruby one liner:
ruby -e 'Dir.foreach(".") {|f| f.count(" \t") > 0 and File.rename(f, f.delete(" \t"))}'
ls-1 | awk'/{a=$0;gsub(//,“”);b=“mv\”a“\”“$0;system(b);}'/bin/sh:1:语法错误:”(“意外的/bin/sh:1:语法错误:”(“意外的/bin/sh:1:语法错误:”)意外的
抛出上述错误awk u r使用的版本是什么。如果solaris,那么您可以使用nawkI我正在使用Ubuntu12.04和mawk 1.3.3。您可以使用bash-here字符串使其更整洁:mv“$file”$(tr-d'[:space:]“我知道,但它不适用于sh,在OP使用shAh的一条评论之后,他将bash从问题标签中删除。@glennjackman:如果是语言不可知的问题,那么这个问题更有趣。你需要引用$I
,以防它实际上包含空格。那么为什么你的问题被标记为bash
?它们是两个不同的问题出租shell。是的,但是大多数人都使用bash,这与bash和zhexcept都相关。你的答案在bash
中不起作用。区别是非常相关的。有没有可能你会有两个原始文件压缩为相同的文件名?例如文件名a.mp3
和文件名a.mp3
。我不担心关于冲突,这可能是另一个问题。JVM语言解决方案如何?肯定比呼叫mv
for old in *; do
new="${old//[[:space:]]}"
[[ $old = $new || -f $new ]] || mv "$old" "$new"
done
import os
for f in os.listdir("."):
r = f.replace(" ","")
if( r != f):
os.rename(f,r)
ruby -e 'Dir.foreach(".") {|f| f.count(" \t") > 0 and File.rename(f, f.delete(" \t"))}'