要打印GunZip FileName / PathName和Selected Rows:

时间:2014-08-14 14:18:00

标签: unix awk

要从目录/子目录中的所有文件中打印前2行以及文件名和路径名。 所有都是* .gz扩展名文件。该目录/子目录中有大约10000个文件,并且有多个子目录。

例如:

Dir:home/Test

sample_Test.csv.gz

10,Jan,100
30,Jan,300
50,Jan,500

Dir:home / Test / Feb

sample_feb.csv.gz

10,Feb,200
20,Feb,400
40,Feb,800
60,Feb,1200

Dir:home / Test / Mar / Data

sample_mar.csv.gz

10,Mar,200
20,Mar,400
40,Mar,800
60,Mar,1200

预期产出:

Filename:sample_jan.csv.gz , PathName: home/Test
10,Jan,100
30,Jan,300

Filename:sample_feb.csv.gz , PathName: home/Test/Feb
10,Feb,200
20,Feb,400

Filename:sample_mar.csv.gz , PathName: home/Test/Mar/Data
10,Mar,200
20,Mar,400

尝试了下面的命令和Partial。

for file in *.gz; do echo "Filename: $file"; zcat "$file" | head -2 ; done

想在“home”目录中运行命令,该目录将搜索当前目录和子目录下的文件。 寻找你的建议!!!

1 个答案:

答案 0 :(得分:1)

如果您使用for展开find循环:

for FILE in `find home -type f -name *.gz`; do
  echo "Filename: `basename $FILE` , PathName: `dirname $FILE`"
  zcat $FILE | head -2
done

type f仅查找文件。

basename删除目录和后缀,留下文件名。

dirname从文件名中删除非目录后缀,保留目录路径。