处理数据集常用的linux命令

总结一下,平时常用的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

切取中间行1001行到2000行:sed -n '1001,2000p' images.txt >2.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/' *

(6)文件名中去掉空格:rename 's/ /_/g' *

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/

find -type f -name "*.jpg" | xargs -i cp {} /home

(3)移动指定数量文件到另一个文件夹

 ls |head -n 10000 |xargs -i cp {} /tmp 移动前10000个文件 到/tmp
  ls |tail -n 10000 |xargs -i cp {} /tmp  移动后10000个文件 到/tmp

ls indir |head -n10000 | xargs -I file mv file outdir

6、统计字符串AABB出现次数并输出

grep -o ' AABB' dir1/*.xml | wc -l >>1.txt

find /Annotations/ -name "*.xml" |xargs grep -o 'AABB'|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

find ./xmltest2/ -name "*.xml" -exec grep -ri "AABB" -l >1.txt {} \;

(3)文件中含有空格比如:335_WIN_20201027_14_49_37_Pro (2).xml

用find -print0和xargs -0来进行移动或删除

find ./ -name  "*(2).xml"  -print0| xargs  -0 -i mv {} ./../

find ./ -name "*(2).xml" -print0|xargs -0 rm -rf

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

在文件1.txt第n行插入(n<=文本行总数): sed -i  "ni #!/bin/sh " 1.txt

9、查看文件数量和行数

查看文件行数:wc -l filename

查看文件夹内文件数量:ls -l |grep "^-"|wc -l

查看文件夹内以及子文件夹中总共文件数量: ls -lR|grep "^-"| wc -l

10、查看目录下文件大小

du -ah --max-depth=1

 11、查找文件大小为0的文件并删除:find . -name "*" -type f -size 0c | xargs -n 1 rm -f

12、移动指定数量文件到另一个文件夹

ls -Q img10 | head -500 | xargs -i mv img10/{} img10_01/

13、文件分割

split -l num *.txt prefix

split -l 5050 20221014_all_202209030002-202210100009_5W.txt 20221014_all_202209030002-202210100009_5W

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值