CV 演算法工程師常用 shell 命令 15 條

進擊の戴戴發表於2020-05-27

CV 演算法工程師作為耗時間耗藍條的工種,工作效率不提升就會整日淹沒在指令碼里,分享 15 個常用 shell 命令,每個都可以舉一反三,也可以新增到 alias,給短暫的生命續一秒。

  1. 遞迴統計目錄下的檔案數目
ls -lR | grep "^-" | wc -l
  1. 遞迴找出目錄下所有的 JPG 圖片, 可通過管道輸入到檔案
find $PWD | xargs ls -d  | grep ".jpg$"
  1. 迴圈執行某個命令
while true; do $do_something; date; sleep 10; done
  1. 檢視 GPU 狀態及相關程式
nvidia-smi | tee /dev/stderr | awk '/ C / {print $3}' | xargs -r ps -up

CV 演算法工程師常用 shell 命令 20 條

  1. 時間戳轉換
date -d @1590044013
# Thu May 21 14:53:33 CST 2020
  1. 遍歷當前檔案下,對特定檔案/目錄執行某個操作
for f in $(ls $PWD); do if [ "${f##*.}"x = "mp4"x ]; then $do_something; fi ; done
  1. 提高 PATH 相關變數列印的可讀性
echo -e ${PATH//:/\\n}

CV 演算法工程師常用 shell 命令 20 條

  1. AVI 轉 MP4
ffmpeg -i sample.avi -c:v libx264 -pix_fmt yuv420p sample.mp4
  1. 隨機返回文字里 10 行
shuf -n 10 sample.txt
  1. 查詢目標在第幾行
grep -n 'my_target_string'  sample.txt
  1. 按照 1/10 均勻抽取
sed -n ‘1~10p’ sample.txt > sample.10in1.txt
  1. 通過文字(存放相對路徑)指定需要同步的檔案
rsync -avz —files-from=sample.txt . username@ip:/path/to/remote
  1. 文字里的相對路徑轉成絕對路徑
sed -i "s#^#$PWD#" sample.txt
  1. 將當前目錄下的所有任意命名的圖片轉成視訊(注意 shape,yuv 引數)
input=/path/to/input
output=/path/to/output.mp4
ffmpeg -y -r 16 -f image2 -s 1280x720 -pattern_type glob \
    -i $input/\*.jpg -vf \
    drawtext="fontfile=/usr/share/fonts/open-sans/OpenSans-Regular.ttf: text='%{frame_num}': fontcolor=red: fontsize=40: x=(w-tw)/2: y=0.95*h" \
    -vcodec libx264 -crf 8 -pix_fmt yuv420p $output
  1. 視訊拼接
ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex "[0:v]pad=iw:ih*2[a];[a][1:v]overlay=0:h" vert.mp4  # 上下拼接
ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex "[0:v]pad=iw*2:ih*1[a];[a][1:v]overlay=w" hori.mp4  # 左右拼接
ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -i 4.mp4 -filter_complex "[0:v]pad=iw*2:ih*2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=0:h[c];[c][3:v]overlay=w:h" grid.mp4  # 四宮格

有愛自取,裡面的命令都可以靈活使用,遇到問題就留言~

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章