请问这是怎么回事阿?关于rename

sh/bash/dash/ksh/zsh等Shell脚本
回复
esolve
帖子: 210
注册时间: 2010-05-08 4:52

请问这是怎么回事阿?关于rename

#1

帖子 esolve » 2010-09-30 7:57

我想将文件夹里(里面还有子文件夹)所有.jad文件后缀改为.java文件
但是下面的脚本都出现错误,请问怎么回事阿?

nanger@nanger-laptop:~/Desktop/try/b$ find -type f -name '*.jad' -exec rename 'jad' 'java' {} \;
Bareword "jad" not allowed while "strict subs" in use at (eval 1) line 1.
Bareword "jad" not allowed while "strict subs" in use at (eval 1) line 1.
Bareword "jad" not allowed while "strict subs" in use at (eval 1) line 1.
Bareword "jad" not allowed while "strict subs" in use at (eval 1) line 1.
Bareword "jad" not allowed while "strict subs" in use at (eval 1) line 1.
Bareword "jad" not allowed while "strict subs" in use at (eval 1) line 1.
Bareword "jad" not allowed while "strict subs" in use at (eval 1) line 1.


nanger@nanger-laptop:~/Desktop/try/b$ rename jad java *.jad
Bareword "jad" not allowed while "strict subs" in use at (eval 1) line 1.


另外我还想删除文件夹里(包括子文件夹)所有.class文件,但是如果文件名中有$就不删除,如abc.class 就删除 abc1$.class就不删除,如何写脚步做到阿?谢谢
头像
link_01
帖子: 1024
注册时间: 2008-11-05 13:24

Re: 请问这是怎么回事阿?关于rename

#2

帖子 link_01 » 2010-09-30 8:32

find -type f -name '*.jad' -exec rename 'jad' 'java' {} \;
[bash]find -type f -name '*.jad' -exec rename 's/jad/java/' {} \;
find -type f -name '*.jad' -exec rename.ul 'jad' 'java' {} \;[/bash]
如果在一个目录下的话,
[bash]rename 's/.jad$/.java/' *.jad 或 rename.ul .jad .java *.jad[/bash]
至于class,好像find的测试命令正则不多,可以试试[],如
[bash]find . -type f -name '*[^$].class' -exec rm {} \;[/bash]
最好去掉rm验证下。
目前没有启动linux,所以没有验证。
笔记
-------------------------------------
http://blog.163.com/wqt_1101
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: 请问这是怎么回事阿?关于rename

#3

帖子 trigger » 2010-09-30 9:28

echo "abc1$.class"|sed 's/\$/\\$/'
abc1\$.class
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 请问这是怎么回事阿?关于rename

#4

帖子 tusooa » 2010-09-30 14:34

readlink -f $(readlink -f $(readlink -f $(readlink -f $(which rename))))

代码: 全选

] ls -ld //
esolve
帖子: 210
注册时间: 2010-05-08 4:52

Re: 请问这是怎么回事阿?关于rename

#5

帖子 esolve » 2010-09-30 17:20

link_01 写了:
find -type f -name '*.jad' -exec rename 'jad' 'java' {} \;
[bash]find -type f -name '*.jad' -exec rename 's/jad/java/' {} \;
find -type f -name '*.jad' -exec rename.ul 'jad' 'java' {} \;[/bash]
如果在一个目录下的话,
[bash]rename 's/.jad$/.java/' *.jad 或 rename.ul .jad .java *.jad[/bash]
至于class,好像find的测试命令正则不多,可以试试[],如
[bash]find . -type f -name '*[^$].class' -exec rm {} \;[/bash]
最好去掉rm验证下。
目前没有启动linux,所以没有验证。

谢谢,对于
[bash]find . -type f -name '*[^$].class' -exec rm {} \;[/bash]

不行阿,

nanger@nanger-laptop:~/Desktop/try/b$ find -type f -name "*[^\$]*.class"
./demo/ConfigDemo.class
./demo/WaveTest$RateTask.class
./demo/WaveTest.class
./ConfigurationParser.class
./ConfigurationParser$1.class
头像
link_01
帖子: 1024
注册时间: 2008-11-05 13:24

Re: 请问这是怎么回事阿?关于rename

#6

帖子 link_01 » 2010-10-07 14:25

为啥要改?
find . -type f -name '*[^$].class'
find -type f -name "*[^\$]*.class"
笔记
-------------------------------------
http://blog.163.com/wqt_1101
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 请问这是怎么回事阿?关于rename

#7

帖子 tusooa » 2010-10-15 22:22

代码: 全选

tlcr: 0 庚寅年九月初八日 22:17:50 /tmp/test
● find -type f -name '*.class' | grep -v '\$'         
./1.class
./2.class
tlcr: 0 庚寅年九月初八日 22:18:34 /tmp/test
● find -type f -name '*.class'               
./1.class
./2.class
./3$1.class
tlcr: 0 庚寅年九月初八日 22:18:39 /tmp/test
● 
grep下不就行了?

代码: 全选

] ls -ld //
回复