可可熊的窝

shell脚本解题1

IN:Shell, 编程相关   Tags:    Comments:9

问题:请教如何得到一个目录树的最深目录路径?

解法:
1.

find -type d | awk '{if( max < gsub(/\//,"/")) {max= gsub(/\//,"/");maxp=$0"/"}  else if (max == gsub(/\//,"/")) maxp=maxp"\n"$0"/"} END{print maxp}'

2.

find -type d -printf "%d %p\n" | sort -nrk1 | awk 'NR==1{a=$1}a==$1{print $2}'

问题:我想将包含read的行放在echo单词的后面

解法:

sed '/read/{h;d};/echo/{G;s/\(.*echo\)\(.*\)\n\(.*\)/\1\3\2/}'  urfile 

问题:怎么copy一个目录中的某些文件,但保持目录结构?

比如说,我想copy

sourcedir\a\b\c.java
sourcedir\a\b\c.cs
sourcedir\a\b\d.java
sourcedir\a\b\d.cs

destdir\a\b\c.java
destdir\a\b\d.java

解法:
1.

rsync -av --include='*.java' --filter='hide,! */' ./sourcedir/ ./destdir

2.

cp -r b dest;find dest -type f ! -name "*.java" | xargs rm

我的解法
3.

tar -c * | tar -xf- --wildcards -C destdir *.java

4.

find sourcedir -name "*.java"|xargs -I {} cp  --parents {} destdir

请教:如何枚举目录中所有没有子目录的目录的路径?

解法:
1.

find -type d -printf "%h\t%p\n" | awk 'BEGIN{FS="\t"}{a[$1]++;a[$2]++}END{for(i in a)if(a[i]==1)print i}'

2.

find -type d -ls|awk '$4==2{print $NF}'

问题:
有这样一个字符串 MG001:MobileLove:MGLoveCMD:down: 每个字段以冒号分割
STRING=”MG001:MobileLove:MGLoveCMD:down:”
我想把其中的每个字段分别赋值给另外几个变量,比如第一个字段赋值给SERV_CODE ,第二个赋值给
APPLICATION………….

解法:

IFS=: read SERV_CODE APPLICATION ... <<<"$STRING"
07-10
2008

9 Comments for shell脚本解题1

Leave a Comment

loading...