分页: 1 / 2
shell 循环 处理带空格的文件
发表于 : 2012-12-19 22:19
由 kimonao
本来想实现一个 将 文件 后缀CUE 改成 cue的功能, 结果却各种报错。
因为文件夹是有很多空格的 所以,,,
本小白初学者 求大神指点: 下面是问题脚本
#!/bin/bash
allname= "find ./ -type f | grep CUE"
for name in $(find ./ -type f | grep CUE)
do
mv "$name" "${name%.CUE}".cue
done
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-19 22:31
由 枫叶饭团
改IFS
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-20 12:47
由 sunfish
rename 's/.CUE$/.cue/' *
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-20 14:53
由 kimonao
枫叶饭团 写了:改IFS
怎么该呀 = = IFS 是神马? =o =*
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-20 15:03
由 kimonao
sunfish 写了:rename 's/.CUE$/.cue/' *
结果 出现了 死循环。 执行无反应 = =
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-20 16:07
由 sunfish
先看看你的rename是不是perl版本的,c版本的你查一下用法,man看
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-20 16:48
由 kimonao
sunfish 写了:先看看你的rename是不是perl版本的,c版本的你查一下用法,man看
perl版的
话说 问题主要是 无法解决 路径含有空格的问题
跪求 完整答案 T——T
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-20 17:34
由 sunfish
我测试了,带空格没问题,不知道你的目录的文件啥情况
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-20 20:47
由 kimonao
sunfish 写了:我测试了,带空格没问题,不知道你的目录的文件啥情况
你的那个方法可以处理文件夹下的文件, 可是文件夹里面的 带空格的文件夹名的文件夹里面的文件(就是当前目录下 还有一个带空格名的文件夹) 就不起作用了
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-20 21:34
由 cao627
代码: 全选
$ find ./ -type f | grep cue
./test.cue
./a a/tt.cue
如上find找到的其实是两个文件,但用for循环付给变量的是三个值 ./test.cue ./a 和 a/tt.cue
以下mv命令将这三个值作为文件操作,于是就会应为找不到后两个文件而出错。
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-20 23:59
由 kimonao
cao627 写了:代码: 全选
$ find ./ -type f | grep cue
./test.cue
./a a/tt.cue
如上find找到的其实是两个文件,但用for循环付给变量的是三个值 ./test.cue ./a 和 a/tt.cue
以下mv命令将这三个值作为文件操作,于是就会应为找不到后两个文件而出错。
恩 确实是这样啊, 报的一堆错误也都是这样,求大神解决办法啊!!
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-21 8:49
由 mjp123
sunfish 写了:rename 's/.CUE$/.cue/' *
正解,只此一句。
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-21 8:59
由 kimonao
mjp123 写了:sunfish 写了:rename 's/.CUE$/.cue/' *
正解,只此一句。
文件夹下 还有文件夹的。 不是只有文件的
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-21 10:00
由 bones7456
代码: 全选
find ./ -type f -name "*.CUE" | while read name;do mv "$name" "${name%.CUE}".cue;done
Re: shell 循环 处理带空格的文件
发表于 : 2012-12-21 10:51
由 kimonao
bones7456 写了:代码: 全选
find ./ -type f -name "*.CUE" | while read name;do mv "$name" "${name%.CUE}".cue;done
跪谢大神! 已终结~ >_<~