提问者:小点点

遍历目录并将文件名输出到txt文件


晚上好,

我想编写一个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:这只是我的第二篇文章,所以不要苛刻:)


共1个答案

匿名用户

与原来的一些变化:

    null

这是新脚本:

#!/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"

相关问题