Bash脚本从文件名中删除前导空格

时间:2013-05-29 22:59:15

标签: bash fish

所以我有一堆文件,如:

 Aaron Lewis - Country Boy.cdg
 Aaron Lewis - Country Boy.mp3
 Adele - Rolling In The Deep.cdg
 Adele - Rolling In The Deep.mp3
 Adele - Set Fire To The Rain.cdg
 Adele - Set Fire To The Rain.mp3
 Band Perry - Better Dig Two.cdg
 Band Perry - Better Dig Two.mp3
 Band Perry - Pioneer.cdg
 Band Perry - Pioneer.mp3

我需要在bash或fish脚本中删除前导空格。

4 个答案:

答案 0 :(得分:5)

要删除您提供的文件名中的前导空格字符,您可以使用:

 IFS=$'\n'
 for f in $(find . -type f -name ' *')
 do 
     mv $f ${f/\.\/ /\.\/}
 done

此:

  • 将IFS更改为换行符;这样它就不会阻塞文件名中的空格。
  • 查找当前目录中以空格开头的所有文件。
  • 使用bash子字符串替换将每个文件移动到没有前导空格的文件名。

答案 1 :(得分:0)

for x in \ * ; do
  mv "$x" `echo "$x" | sed "s/^ +//"`
done

这很快又脏。

答案 2 :(得分:0)

cat <file> | sed -e 's/^[ ]*//'

应该做的伎俩。捕获标准输出并写入文件。

答案 3 :(得分:0)

您不需要sed。只需使用bash字符串函数:

for file in /path/to/files/*; 
    do mv "$file" "${file# *}"; 
done