打印具有特定后缀

时间:2016-03-17 18:19:58

标签: bash if-statement for-loop subdirectory

我想在所有子目录中打印文件的名称(我已经有了),但在子目录中依赖我想在名称后面添加一个特定的后缀。

对于子目录 gas_station 我想添加后缀 50 ,对于子目录 golf_course 我想要后缀 51 < /强>

这就是我所拥有的,但它不起作用:

#!/bin/bash

#lists the subdirectories, these are 'gas_station' and 'golf_course'
for i in $(ls -d */); do 

    if ${i%%/} = 'gas_station'

        then

            find /home/apples/dataset/small_train_B/g/${i%%/}/* -type f -printf "g/"${i%%/}"/""%f 50\n" 
        else

            find /home/apples/dataset/small_train_B/g/${i%%/}/* -type f -printf "g/"${i%%/}"/""%f 51\n" 

    fi

done

打印出以下内容:

...
g/gas_station/00000997.jpg 51
g/gas_station/00000998.jpg 51
g/golf_course/00000017.jpg 51
...

但是,我要求:

...
g/gas_station/00000997.jpg 50
g/gas_station/00000998.jpg 50
g/golf_course/00000017.jpg 51
...

3 个答案:

答案 0 :(得分:1)

试试这个

for f in $(ls -d */); do
   d=${f%%/}; 
   if [ ${d} = "gas station" ]; 
   then  n=50;
   else  n=51;
   fi; 

   find ${d} -type f -printf "g/"${d}"/""%f $n\n";
done

答案 1 :(得分:1)

这有什么理由不起作用吗?

#!/bin/bash
for f in gas_station/*; do
    printf "%s 50\n" "$f"
done
for f in golf_course/*; do
    printf "%s 51\n" "$f"
done

答案 2 :(得分:0)

您可以避免摆弄参数修饰符,只需与正确的字符串进行比较:

if [ "$i" = 'gas_station/' ]