【发布时间】:2022-11-26 04:06:51
【问题描述】:
我在目录a中。在目录a下有一个固定的目录b。 b目录下有d{091....099}目录。这个d目录下还有不同的*.gz文件。我需要从这些文件(文件名)中提取数据并一个接一个地打印它们。
我试过这个:
#!/bin/bash
for file in $(find . -name "*.gz"); do
file=$(basename ${file})
echo ${file:0:4} | tee -a receiver_ids > log
echo ${file:16:17} | tee -a doy > log2
echo ${file:0:100} | tee -a data_record > log3
done
cut -c 1-3 < doy > doy2
cut -c 1-23 < data_record > summary_name
但是通过这样做,文件以无序方式处理。这就是我得到的,
cat data_record
ISTA00TUR_R_20190940000_01D_30S_MO.crx.gz
ISTA00TUR_R_20190990000_01D_30S_MO.crx.gz
ISTA00TUR_R_20190970000_01D_30S_MO.crx.gz
ISTA00TUR_R_20190920000_01D_30S_MO.crx.gz
ISTA00TUR_R_20190980000_01D_30S_MO.crx.gz
ISTA00TUR_R_20190910000_01D_30S_MO.crx.gz
ISTA00TUR_R_20190960000_01D_30S_MO.crx.gz
ISTA00TUR_R_20190930000_01D_30S_MO.crx.gz
ISTA00TUR_R_20190950000_01D_30S_MO.crx.gz
我怎样才能解决这个问题?
【问题讨论】:
-
目标操作系统是什么?您可能需要特定的扩展名来处理您的文件,同时按文件名对它们进行排序。顺便说一句,
for f in $(...)是一个损坏的结构,不要使用它 -
我正在尝试在 shell 上编写 bash 代码。我正在通过服务器连接。使用了ubuntu,但我不知道它的版本。
-
您确定要
log、log2和log3只包含最后处理的文件吗?另外,receiver_ids、doy和data_record真的需要保留上次运行脚本的结果吗?