5

所以我有一堆文件,例如:

 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

4 回答 4

5

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

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

这个:

  • 将 IFS 更改为仅是换行符;这样它就不会阻塞文件名中的空格。
  • 在当前目录中查找所有以空格开头的文件。
  • bash使用子字符串替换将每个文件移动到没有前导空格的文件名。
于 2013-05-29T23:22:29.093 回答
0
for x in \ * ; do
  mv "$x" `echo "$x" | sed "s/^ +//"`
done

这又快又脏。

于 2013-05-29T23:07:04.343 回答
0

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

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

于 2013-05-29T23:09:52.360 回答
0

你不需要sed这个。只需使用bash字符串函数:

for file in /path/to/files/*; 
    do mv "$file" "${file# *}"; 
done
于 2013-05-29T23:13:42.030 回答