总结一下,平时常用的linux数据处理命令:
1、生成trainval.txt test.txt 需要用到的随机提取文件名命令:
先随机打乱行:shuf class.txt > class_shuffle.txt
切取前100行:head -n100 class_shuffle.txt > target1.txt
切取剩下行:tail -n+101 class_shuffle.txt > target2.txt
2、对一个文件夹下的文件进行文件进行名字提取:
包含扩展名:ls -1 | grep ".jpg$" > /home/2.txt ls | grep ".jpg" > /home/2.txt
包含路径:ls /home/caffe_extract/*.jpg > /home/2.txt
3、将2中提取的包含扩展名的.txt里的扩展名去掉、数据集中xml的标签进行替换,可以写成脚本:
#!/bin/sh
把文件夹下xml文件中的字符串A,换成B:sed -i "s/A/B/g" *.xml
包含特殊符号时,用#:sed -i "s#*##g" *.xml(把*替换掉)
文件数量较大时: find /media/test/1/ -name "*.txt" | xargs sed -i "s/1/2/g"
find /home/Annotations/ -name "*.xml" | xargs -i sed -i 's/[A-Z]/\l&/g' {} 大写替换成小写
4、批量修改文件后缀名:
(1)把.c 改成.h: find ./ -name "*.c" | awk -F "." '{print $2}' | xargs -i -t mv ./{}.c ./{}.h
(2)把.jpg 修改成.txt : rename 's/\.jpg/\.txt/' *
(3)删除后缀名.JPG: rename 's/.JPG//' *
(4)给所有文件添加后缀名: rename 's/$/\.txt/' *
(5)统一在文件名前加前缀: rename 's/^/good/' *
5、移动文件夹内大量数据:
首先要要进入文件夹目录dir1 在dir1目录下执行
(1) ls dir1 | xargs -t -I {} mv {} dir2/{}
例如 ls /media/JPEGImages/validation_JPEGImages | xargs -t -I {} mv {} /media/JPEGImages/{}
(2) find source/ -name "*.txt" | xargs -i mv {} target/
6、统计字符串AABB出现次数并输出
grep -o ' AABB' dir1/*.xml | wc -l >>1.txt
7、查找字符串AABB在出现在哪个文件中
(1)grep -rn "AABB" /home/Annotations/*.xml >1.txt
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
(2)find /home/Annotations/*.xml | xargs grep -ri "water" -l >1.txt
8、在首行添加字符串
假设处理的文本为test.file
在每行的头添加字符,比如"HEAD",命令如下:sed 's/^/HEAD&/g' test.file >1.txt
在每行的行尾添加字符,比如“TAIL”,命令如下:sed 's/$/&TAIL/g' test.file
在文件1.txt首行插入: sed -i "1i #!/bin/sh " 1.txt
直播APP开发找上海捌跃网络科技有限公司
在文件1.txt第n行插入(n<=文本行总数): sed -i "ni #!/bin/sh " 1.txt
9、查看文件数量和行数
查看文件行数:wc -l filename
查看文件夹内文件数量:ls -l |grep "^-"|wc -l
原文:https://blog.csdn.net/Bankeey/article/details/81011643
网友评论