shell 循环 处理带空格的文件

sh/bash/dash/ksh/zsh等Shell脚本
kimonao
帖子: 9
注册时间: 2012-12-19 22:14
系统: ubuntu12.04

shell 循环 处理带空格的文件

#1

帖子 kimonao » 2012-12-19 22:19

本来想实现一个 将 文件 后缀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
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: shell 循环 处理带空格的文件

#2

帖子 枫叶饭团 » 2012-12-19 22:31

改IFS
头像
sunfish
帖子: 989
注册时间: 2008-05-03 1:53

Re: shell 循环 处理带空格的文件

#3

帖子 sunfish » 2012-12-20 12:47

rename 's/.CUE$/.cue/' *
docker && kubernetes
kimonao
帖子: 9
注册时间: 2012-12-19 22:14
系统: ubuntu12.04

Re: shell 循环 处理带空格的文件

#4

帖子 kimonao » 2012-12-20 14:53

枫叶饭团 写了:改IFS
怎么该呀 = = IFS 是神马? =o =*
kimonao
帖子: 9
注册时间: 2012-12-19 22:14
系统: ubuntu12.04

Re: shell 循环 处理带空格的文件

#5

帖子 kimonao » 2012-12-20 15:03

sunfish 写了:rename 's/.CUE$/.cue/' *
结果 出现了 死循环。 执行无反应 = =
头像
sunfish
帖子: 989
注册时间: 2008-05-03 1:53

Re: shell 循环 处理带空格的文件

#6

帖子 sunfish » 2012-12-20 16:07

先看看你的rename是不是perl版本的,c版本的你查一下用法,man看
docker && kubernetes
kimonao
帖子: 9
注册时间: 2012-12-19 22:14
系统: ubuntu12.04

Re: shell 循环 处理带空格的文件

#7

帖子 kimonao » 2012-12-20 16:48

sunfish 写了:先看看你的rename是不是perl版本的,c版本的你查一下用法,man看
perl版的
话说 问题主要是 无法解决 路径含有空格的问题

跪求 完整答案 T——T
头像
sunfish
帖子: 989
注册时间: 2008-05-03 1:53

Re: shell 循环 处理带空格的文件

#8

帖子 sunfish » 2012-12-20 17:34

我测试了,带空格没问题,不知道你的目录的文件啥情况
docker && kubernetes
kimonao
帖子: 9
注册时间: 2012-12-19 22:14
系统: ubuntu12.04

Re: shell 循环 处理带空格的文件

#9

帖子 kimonao » 2012-12-20 20:47

sunfish 写了:我测试了,带空格没问题,不知道你的目录的文件啥情况
你的那个方法可以处理文件夹下的文件, 可是文件夹里面的 带空格的文件夹名的文件夹里面的文件(就是当前目录下 还有一个带空格名的文件夹) 就不起作用了
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: shell 循环 处理带空格的文件

#10

帖子 cao627 » 2012-12-20 21:34

代码: 全选

$ find ./ -type f | grep cue
./test.cue
./a a/tt.cue

如上find找到的其实是两个文件,但用for循环付给变量的是三个值 ./test.cue ./a 和 a/tt.cue
以下mv命令将这三个值作为文件操作,于是就会应为找不到后两个文件而出错。
kimonao
帖子: 9
注册时间: 2012-12-19 22:14
系统: ubuntu12.04

Re: shell 循环 处理带空格的文件

#11

帖子 kimonao » 2012-12-20 23:59

cao627 写了:

代码: 全选

$ find ./ -type f | grep cue
./test.cue
./a a/tt.cue

如上find找到的其实是两个文件,但用for循环付给变量的是三个值 ./test.cue ./a 和 a/tt.cue
以下mv命令将这三个值作为文件操作,于是就会应为找不到后两个文件而出错。
恩 确实是这样啊, 报的一堆错误也都是这样,求大神解决办法啊!!
头像
mjp123
帖子: 703
注册时间: 2009-04-09 15:06

Re: shell 循环 处理带空格的文件

#12

帖子 mjp123 » 2012-12-21 8:49

sunfish 写了:rename 's/.CUE$/.cue/' *
正解,只此一句。
kimonao
帖子: 9
注册时间: 2012-12-19 22:14
系统: ubuntu12.04

Re: shell 循环 处理带空格的文件

#13

帖子 kimonao » 2012-12-21 8:59

mjp123 写了:
sunfish 写了:rename 's/.CUE$/.cue/' *
正解,只此一句。
文件夹下 还有文件夹的。 不是只有文件的
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

Re: shell 循环 处理带空格的文件

#14

帖子 bones7456 » 2012-12-21 10:00

代码: 全选

find ./ -type f -name "*.CUE" | while read name;do mv "$name" "${name%.CUE}".cue;done
关注我的blog: ε==3
kimonao
帖子: 9
注册时间: 2012-12-19 22:14
系统: ubuntu12.04

Re: shell 循环 处理带空格的文件

#15

帖子 kimonao » 2012-12-21 10:51

bones7456 写了:

代码: 全选

find ./ -type f -name "*.CUE" | while read name;do mv "$name" "${name%.CUE}".cue;done
跪谢大神! 已终结~ >_<~
回复