e********r 发帖数: 2352 | 1 文件包含很多类似的文件名,但是最有都以'*'结尾,想要把'*'去掉
例如:
model10*
model100*
...
需要重命名为:
model10
model100
...
for i in `ls`; do mv -f $i `echo $i | sed 's/.$/_/'`; done
只能把文件名改为:
model1_*
model10_*
对'*'无能为力
请教如何重命名,'*'总是默认为正则表达式的一部分. |
v*****u 发帖数: 92 | 2 * 到底是何物?
这个很重要
【在 e********r 的大作中提到】 : 文件包含很多类似的文件名,但是最有都以'*'结尾,想要把'*'去掉 : 例如: : model10* : model100* : ... : 需要重命名为: : model10 : model100 : ... : for i in `ls`; do mv -f $i `echo $i | sed 's/.$/_/'`; done
|
e********r 发帖数: 2352 | 3 '*'就是一个字符star
【在 v*****u 的大作中提到】 : * 到底是何物? : 这个很重要
|
v*****u 发帖数: 92 | 4 转义不就可以了
sed 's/\*//g'
【在 e********r 的大作中提到】 : '*'就是一个字符star
|
v*****u 发帖数: 92 | 5 如果只有一个 '*'
sed也不用,直接字符串截取
echo ${i%\*}
【在 v*****u 的大作中提到】 : 转义不就可以了 : sed 's/\*//g'
|
xt 发帖数: 17532 | 6 看见/\就很不舒服,用这个:
sed 's%*$%$%g"
【在 v*****u 的大作中提到】 : 转义不就可以了 : sed 's/\*//g'
|
S*A 发帖数: 7142 | 7 像这种我一般都写个 python script 来做。 |
e********r 发帖数: 2352 | 8 I tried all your guys' method. They all do not work. The reason is:
echo modle10* will show:
model10 model100 model101 model102 ...
then
sed 's/\*//g' will cause:
model10 and modle10 has same name
model100 and model100 has same name
modle101 and model101 has same name
【在 v*****u 的大作中提到】 : 转义不就可以了 : sed 's/\*//g'
|
r*****z 发帖数: 906 | 9 一般的系统上都有个rename的命令,是一个perl脚本
rename 's/\*//' model10*\*
就可以改名了
【在 e********r 的大作中提到】 : 文件包含很多类似的文件名,但是最有都以'*'结尾,想要把'*'去掉 : 例如: : model10* : model100* : ... : 需要重命名为: : model10 : model100 : ... : for i in `ls`; do mv -f $i `echo $i | sed 's/.$/_/'`; done
|
e********r 发帖数: 2352 | 10 Thank you for reply.
Could you help me show
model10*
model100*
model101*
If I use
echo model10\*
It shows:
model10*
echo model10*\*
It shows:
model10**
echo model10*
model10 model100 model101
【在 r*****z 的大作中提到】 : 一般的系统上都有个rename的命令,是一个perl脚本 : rename 's/\*//' model10*\* : 就可以改名了
|
|
|
r*****z 发帖数: 906 | 11 你为什么一定要用echo测试呢?
你如果有别的目的就直说,如果光是改名,就用我给出来的命令
【在 e********r 的大作中提到】 : Thank you for reply. : Could you help me show : model10* : model100* : model101* : If I use : echo model10\* : It shows: : model10* : echo model10*\*
|
e********r 发帖数: 2352 | 12 I tried your method. It does not work. That is why I want to use echo.
Thank you.
【在 r*****z 的大作中提到】 : 你为什么一定要用echo测试呢? : 你如果有别的目的就直说,如果光是改名,就用我给出来的命令
|
r*****z 发帖数: 906 | 13 $touch model10* model100* model1000*
$ls
model10* model100* model1000*
$rename 's/\*//' model10*\*
$ls
model10 model100 model1000
【在 e********r 的大作中提到】 : I tried your method. It does not work. That is why I want to use echo. : Thank you.
|
r*****z 发帖数: 906 | 14 此外,你得先确认一下你系统所带的rename的确是那个perl脚本
有的发行版可能提供的是其它版本
【在 r*****z 的大作中提到】 : $touch model10* model100* model1000* : $ls : model10* model100* model1000* : $rename 's/\*//' model10*\* : $ls : model10 model100 model1000
|
e********r 发帖数: 2352 | 15 Command in my system is system command rename:
rename from to file ...
It is not Perl script, could you tell me where I can download that Perl
script
Thank you
【在 r*****z 的大作中提到】 : 此外,你得先确认一下你系统所带的rename的确是那个perl脚本 : 有的发行版可能提供的是其它版本
|
r*****z 发帖数: 906 | 16 如果你用的是D系发行版,比如Debian和Ubuntu,这个rename就是perl这个包
自己带的prename
如果你用的发行版的perl包里面没有这个,可能你得手工下载个debian的perl包,
然后把prename这个文件解压缩出来用
【在 e********r 的大作中提到】 : Command in my system is system command rename: : rename from to file ... : It is not Perl script, could you tell me where I can download that Perl : script : Thank you
|
e********r 发帖数: 2352 | 17 My system is Mandriva, rename command is not a perl script. I will download
it.
Thank you.
【在 r*****z 的大作中提到】 : 如果你用的是D系发行版,比如Debian和Ubuntu,这个rename就是perl这个包 : 自己带的prename : 如果你用的发行版的perl包里面没有这个,可能你得手工下载个debian的perl包, : 然后把prename这个文件解压缩出来用
|
r******s 发帖数: 925 | 18 我也想说这个
【在 S*A 的大作中提到】 : 像这种我一般都写个 python script 来做。
|
T********r 发帖数: 6210 | 19 rename '*' '' *
【在 e********r 的大作中提到】 : 文件包含很多类似的文件名,但是最有都以'*'结尾,想要把'*'去掉 : 例如: : model10* : model100* : ... : 需要重命名为: : model10 : model100 : ... : for i in `ls`; do mv -f $i `echo $i | sed 's/.$/_/'`; done
|