打印具有特定后缀的名称子目录

print names subdirectories with specific suffix

我想打印所有子目录中的文件名(我已经有了),但是 取决于 我想在名称后添加特定后缀的子目录。

对于子目录 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
...

试试这个

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

为什么这不起作用?

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

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

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