分页: 1 / 1

find筛选问题

发表于 : 2011-03-05 8:35
liucheng1513
0010_01_00000091_1100_0_2010_03_07_06_06_58_new.txt
0010_01_00000095_1100_0_2010_03_07_06_06_58_new.txt
0010_01_00000099_1100_0_2010_03_07_06_06_58_new.txt

在/var/apache-tomcat-5.5.20/webapps/bustv/dl_stat/目录下有很多这样的文件,如何用find命令或其他方式筛选第36,37位(06)是09,10,11,12的文件,并把筛选出来的文件的_0_更改成_1_,要具体代码。

Re: find筛选问题

发表于 : 2011-03-05 9:44
trigger
管道给awk进一步筛选

Re: find筛选问题

发表于 : 2011-03-05 17:59
gzbao9999

代码: 全选

ls *.txt|while read i;
do 
temp=`echo $i|cut -c 36-37` ;
   if [ $temp -lt 12 ] && [ $temp -gt 9 ] ;then 
      echo $i;
      newname=${i:0:22}1${i:23} ;
      echo $newname;  
      mv $i $newname;
   fi;
done
试试

Re: find筛选问题

发表于 : 2011-03-05 18:10
liucheng1513
提示: line 5: [: us: integer expression expected

Re: find筛选问题

发表于 : 2011-03-05 19:12
lilydjwg
[python]
import os
for i in os.listdir():
if i[35:37] in ('09', '10', '11', '12'):
os.rename(i, i.replace('_0_', '_1_'))
[/python]

Re: find筛选问题

发表于 : 2011-03-05 19:21
liucheng1513
五楼的这个怎么用啊,怎么把目录添加进去啊/var/apache-tomcat-5.5.20/webapps/bustv/dl_stat/

Re: find筛选问题

发表于 : 2011-03-05 19:30
lilydjwg
liucheng1513 写了:五楼的这个怎么用啊,怎么把目录添加进去啊/var/apache-tomcat-5.5.20/webapps/bustv/dl_stat/
你要是不懂 Python 的话就先 cd 过去吧。懂的话把目录名作为 listdir 的参数传过去就可以了

Re: find筛选问题

发表于 : 2011-03-05 19:32
liucheng1513
cd 过去后怎么用啊

Re: find筛选问题

发表于 : 2011-03-06 8:33
fnan
cd /var/apache-tomcat-5.5.20/webapps/bustv/dl_stat/
for i in $(find . -name '0010_01*new.txt' |awk -F"_" '$9 ~/09|10|11|12/ {print $0}');do fname=$i; mv $fname ${fname/_0_/_1_}; done

Re: find筛选问题

发表于 : 2011-03-06 9:12
sk1418
这行应该可以吧?

代码: 全选

find /var/apache-tomcat-5.5.20/webapps/bustv/dl_stat -name "*.txt" | awk -F'_' '$9~/[06|09|10|11]/ {print $0}'|xargs rename "_0_" "_1_" 

Re: find筛选问题

发表于 : 2011-03-06 10:05
gzbao9999
liucheng1513 写了:提示: line 5: [: us: integer expression expected
说明你传过来的结果集合并不全是下面这种格式的
0010_01_00000091_1100_0_2010_03_07_06_06_58_new.txt
0010_01_00000095_1100_0_2010_03_07_06_06_58_new.txt
0010_01_00000099_1100_0_2010_03_07_06_06_58_new.txt


36、37位是字母的时候会提示那个问题
比如下面这个:
0010_01_00000099_1100_0_2010_03_07_ss_06_58_new.txt
过滤下你的结果集吧

Re: find筛选问题

发表于 : 2011-03-07 14:25
lilydjwg
liucheng1513 写了:cd 过去后怎么用啊
你下载并保存代码,然后

代码: 全选

python3 那个文件
(python2 应该也行)。

Re: find筛选问题

发表于 : 2011-03-14 6:24
fnan
do
temp=`echo $i|cut -c 36-37` ;
if [ $temp -lt 12 ] && [ $temp -gt 9 ] ;then

这句有逻辑错误,09 不是整形,不能这样比较的。