我正在尝试编写一个可以有不同文件名输入的通用脚本。
这只是我的bash脚本的一小部分。
例如,假设文件夹444-55有2个文件qq.filter.vcf
ee.filter.vcf
我希望我的输出是 -
qq
ee
我试过这个并且它有效 -
ls /data2/delivery/Stack_overflow/1111_2222_3333_23/secondary/444-55/*.filter.vcf | sort | cut -f1 -d "." | xargs -n 1 basename
但是我可以说我有一个像这样的文件夹 -
/data2/delivery/Stack_overflow/de.1111_2222_3333_23/secondary/444-55/*.filter.vcf
我的脚本的输出将是
de
de
如何使其通用?
非常感谢你的帮助。
答案 0 :(得分:2)
脚本中的这样的东西会" cut"它:
for i in /data2/delivery/Stack_overflow/1111_2222_3333_23/secondary/444-55/*.filter.vcf
do
basename "$i" | cut -f1 -d.
done | sort
的优点:
ls
的输出,即frowned upon basename
处理后切断,cut
忽略完整路径。答案 1 :(得分:1)
只需在管道中提前移动basename调用:
printf "%s\n" /data2/delivery/Stack_overflow/1111_2222_3333_23/secondary/444-55/*.filter.vcf |
xargs -n 1 basename |
sort |
cut -f1 -d.