分页: 1 / 1

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

发表于 : 2010-09-30 7:57
esolve
我想将文件夹里(里面还有子文件夹)所有.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就不删除,如何写脚步做到阿?谢谢

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

发表于 : 2010-09-30 8:32
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,所以没有验证。

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

发表于 : 2010-09-30 9:28
trigger
echo "abc1$.class"|sed 's/\$/\\$/'
abc1\$.class

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

发表于 : 2010-09-30 14:34
tusooa
readlink -f $(readlink -f $(readlink -f $(readlink -f $(which rename))))

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

发表于 : 2010-09-30 17:20
esolve
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

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

发表于 : 2010-10-07 14:25
link_01
为啥要改?
find . -type f -name '*[^$].class'
find -type f -name "*[^\$]*.class"

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

发表于 : 2010-10-15 22:22
tusooa

代码: 全选

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下不就行了?