總結(jié)一下linux常用命令,平時常用的linux數(shù)據(jù)處理命令:
1、生成trainval.txt test.txt 需要用到的隨機(jī)提取文件名命令:
先隨機(jī)打亂行:shuf class.txt > class_shuffle.txt
切取前100行:head -n100 class_shuffle.txt > target1.txt
切取剩下行:tail -n+101 class_shuffle.txt > target2.txt
2、對一個文件夾下的文件進(jìn)行文件進(jìn)行名字提取:
包含擴(kuò)展名:ls -1 | grep ".jpg$" > /home/2.txt ls | grep ".jpg" > /home/2.txt
包含路徑:ls /home/caffe_extract/*.jpg > /home/2.txt
3、將2中提取的包含擴(kuò)展名的.txt里的擴(kuò)展名去掉、數(shù)據(jù)集中xml的標(biāo)簽進(jìn)行替換,可以寫成腳本:
#!/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* 在當(dāng)前目錄下查找以april開始的文件。find . -name "*.jpg" | xargs tar -czf picture.tgz 這個命令執(zhí)行完畢后,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)統(tǒng)一在文件名前加前綴:rename 's/^/good/' *
(6)文件名中去掉空格:rename 's/ /_/g' *
5、移動文件夾內(nèi)大量數(shù)據(jù):
首先要要進(jìn)入文件夾目錄dir1 在dir1目錄下執(zhí)行
(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、統(tǒng)計字符串AABB出現(xiàn)次數(shù)并輸出
grep -o ' AABB' dir1/*.xml | wc -l >>1.txt