总结一下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
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文件中的字符串Alinux常用命令,换成B:sed -i "s/A/B/g" *.xml
包含特殊符号时,用#:sed -i "s#*##g" *.xml(把*替换掉)
$find . -name "yao*" | xargs chmod o-w ====================================================== find -name april* 在当前目录下查找以april开始的文件。find . -name "*.jpg" | xargs tar -czf picture.tgz 这个命令执行完毕后,picture.tgz中只有907个文件。rm test* -rf 改为:find . -name "test*" | xargs rm -rf "test*"。
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
6、统计字符串AABB出现次数并输出
grep -o ' AABB' dir1/*.xml | wc -l >>1.txt