Unix 要打印GunZip文件名/路径名和所选行:
要打印目录/子目录中所有文件的前2行以及文件名和路径名。 所有文件都是*.gz扩展名文件。在该目录/子目录中有大约10000个文件,并且有多个子目录 例如: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
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,很高兴它起作用。