Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 要打印GunZip文件名/路径名和所选行:_Unix_Awk - Fatal编程技术网

Unix 要打印GunZip文件名/路径名和所选行:

Unix 要打印GunZip文件名/路径名和所选行:,unix,awk,Unix,Awk,要打印目录/子目录中所有文件的前2行以及文件名和路径名。 所有文件都是*.gz扩展名文件。在该目录/子目录中有大约10000个文件,并且有多个子目录 例如: Dir:home/Test 示例_Test.csv.gz 10,Jan,100 30,Jan,300 50,Jan,500 目录:首页/测试/二月 示例_feb.csv.gz 10,Feb,200 20,Feb,400 40,Feb,800 60,Feb,1200 目录:主页/测试/Mar/数据 示例_mar.csv.gz 10,Ma

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

例如:

Dir:home/Test
示例_Test.csv.gz

10,Jan,100
30,Jan,300
50,Jan,500
目录:首页/测试/二月

示例_feb.csv.gz

10,Feb,200
20,Feb,400
40,Feb,800
60,Feb,1200
目录:主页/测试/Mar/数据

示例_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
试过以下命令和部分

for file in *.gz; do echo "Filename: $file"; zcat "$file" | head -2 ; done
希望在“home”目录中运行该命令,该命令将搜索当前目录和子目录下的文件。
寻找你的建议

如果使用
查找
展开
for
循环:

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

basename
去掉目录和后缀,留下文件名


dirname
从离开目录路径的文件名中去掉非目录后缀。

那么您现在使用的命令有什么问题吗?此命令仅搜索当前目录中的文件,希望知道如何打印路径名。没问题@AVN,很高兴它起作用。