晚上好,
我想编写一个bash脚本,循环遍历目录中的所有文件,如果文件匹配正则表达式,它会将文件名和一些附加信息[使用cat]输出到txt文件。
该脚本将用于标记图像集,以便稍后创建要在caffe中使用的LMDB。
这是我的尝试;
#!/bin/bash
for f in /absolutepath/train/*
do
if [$f == '/absolutepath/train/felix.*']
then $f cat ' 0' > train.txt
elif [$f == '/absolutepath/train/jonas.*']
then $f cat ' 1' > train.txt
elif [$f == '/absolutepath/train/joachim.*']
then $f cat ' 2' > train.txt
elif [$f == '/absolutepath/train/vriendinjoachim.*']
then $f cat ' 3' > train.txt
else $f cat ' 4' > train.txt
fi
echo "Done :D"
done
目录中的文件如下所示:felix(1). jpg、felix(2).jpg、……
如果你知道一个现有的脚本可以为我做到这一点,不要犹豫,提到这一点。
PS:这只是我的第二篇文章,所以不要苛刻:)
与原来的一些变化:
这是新脚本:
#!/usr/bin/env bash
for f in /absolutepath/train/*
do
value=4
case "$f" in
( /absolutepath/train/felix\ \(*\).jpg )
value=0
;;
( /absolutepath/train/jonas\ \(*\).jpg )
value=1
;;
( /absolutepath/train/joachim\ \(*\).jpg )
value=2
;;
( /absolutepath/train/vriendinjoachim\ \(*\).jpg )
value=3
;;
(*)
value=4
;;
esac
#printf '%d\t%s\n' "$value" "$f" >> train.txt
printf '%s\t%d\n' "$f" "$value" >> train.txt
done
echo "Done :D"