我想在所有子目录中打印文件的名称(我已经有了),但在子目录中依赖我想在名称后面添加一个特定的后缀。
对于子目录 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
...
答案 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/' ]