find筛选问题
-
- 帖子: 62
- 注册时间: 2010-09-08 18:17
find筛选问题
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_,要具体代码。
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_,要具体代码。
上次由 liucheng1513 在 2011-03-05 19:03,总共编辑 3 次。
- trigger
- 帖子: 1604
- 注册时间: 2006-10-25 18:08
Re: find筛选问题
管道给awk进一步筛选
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
-
- 帖子: 627
- 注册时间: 2008-11-08 18:34
Re: find筛选问题
代码: 全选
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
气血鼓荡,身体发胀,偶飘上头,三时舒畅
-
- 帖子: 62
- 注册时间: 2010-09-08 18:17
Re: find筛选问题
提示: line 5: [: us: integer expression expected
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: find筛选问题
[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]
import os
for i in os.listdir():
if i[35:37] in ('09', '10', '11', '12'):
os.rename(i, i.replace('_0_', '_1_'))
[/python]
-
- 帖子: 62
- 注册时间: 2010-09-08 18:17
Re: find筛选问题
五楼的这个怎么用啊,怎么把目录添加进去啊/var/apache-tomcat-5.5.20/webapps/bustv/dl_stat/
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: find筛选问题
你要是不懂 Python 的话就先 cd 过去吧。懂的话把目录名作为 listdir 的参数传过去就可以了liucheng1513 写了:五楼的这个怎么用啊,怎么把目录添加进去啊/var/apache-tomcat-5.5.20/webapps/bustv/dl_stat/
-
- 帖子: 62
- 注册时间: 2010-09-08 18:17
Re: find筛选问题
cd 过去后怎么用啊
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: find筛选问题
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
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
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
-
- 帖子: 229
- 注册时间: 2007-07-01 17:36
- 系统: (En):System
- 来自: (En):address
- 联系:
Re: find筛选问题
这行应该可以吧?
代码: 全选
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_"
---
regards,
Kent
regards,
Kent
-
- 帖子: 627
- 注册时间: 2008-11-08 18:34
Re: find筛选问题
说明你传过来的结果集合并不全是下面这种格式的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
过滤下你的结果集吧
气血鼓荡,身体发胀,偶飘上头,三时舒畅
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: find筛选问题
你下载并保存代码,然后liucheng1513 写了:cd 过去后怎么用啊
代码: 全选
python3 那个文件
-
- 帖子: 919
- 注册时间: 2009-07-01 22:04
Re: find筛选问题
do
temp=`echo $i|cut -c 36-37` ;
if [ $temp -lt 12 ] && [ $temp -gt 9 ] ;then
这句有逻辑错误,09 不是整形,不能这样比较的。
temp=`echo $i|cut -c 36-37` ;
if [ $temp -lt 12 ] && [ $temp -gt 9 ] ;then
这句有逻辑错误,09 不是整形,不能这样比较的。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。